Redis 的高可用 很大程度上要归功于其 为 事件驱动服务工具,采用
Reactor 模式
使得其 拥有高性能 IO 操作
首先我们先科普一下什么叫 Reactor 模式
,即 事件驱动机制,应用程序提供相应的接口并注册到 Reactor 上,如果相应的事件发生,Reactor 将主动调用之前注册的接口,而这些接口又称为 回调函数
☆☆ [正在找工作的程序猿] ☆☆ !~ 不懂健身的吉他手成为不了好的程序猿!!!
上次我们主要讲解的是 RDB 机制,这次我们着重对 AOF 持久化进行详细说明,另外后续我们也会针对 RDB-AOF 混合模式(Redis 4 开始)进行分享…
AOF(Append Only File)顾名思义 只进行追加操作的文件,通过保存 Redis 服务器所执行的 命令来记录数据库的状态,命令数据都是以 Redis 的请求协议格式(RESP 协议)保存在文本中的,协议详情可以参考之前的文章 RESP 协议
redis-check-aof
工具进行 一致性修复;另外,AOF 采用了 RESP 协议,具有很强的可读性相信能看到这的各位大神 肯定都知道 RDB(Redis DataBase)/ AOF(Append Only File) 两种 Redis 持久化机制,大多数也熟知两种方式的 优劣之处;但是 它们的 原理、存储方式、协议 等等方面 就不是所有人都清楚的了,所以我们接下来就分作两期 分别对 RDB 和 AOF 机制进行详细说明…
RDB(Redis DataBase)顾名思义 Redis 数据存储,将 Redis 服务器里数据以 文件的形式 存入 硬盘 加以备份
有序集合类型 的对象编码方式为 OBJ_ENCODING_ZIPLIST 和 OBJ_ENCODING_HT,对应的 底层数据结构为 压缩列表ziplist 和 字典dict
其实 哈希类型 和 有序集合类型 一定程度上很像,特别是在 ziplist 的类型限制条件上
哈希类型 在使用 ziplist 作为底层数据结构的时候,每个 集合元素 使用紧挨着的两个压缩列表节点表示,第一个节点 保存元素 成员,第二个节点 保存元素 分值;压缩列表中集合元素都是按照 添加时间上 进行排序存储的,后添加的 键值对 从 压缩列表 尾部 压入
而 哈希类型 中的 字典结构 就比较简单了,哈希类型 每个键值对 都对应 字典中的每个键值对,就像我们在 字典篇章 中提到的,比如 HMSET person name "kety" age 20 weight "75kg" height 20
,即为 操作 key 为 person 的字典,而 值也是由字典结构数据组成,key=name | key=age | key=weight | key=height
有序集合类型 的对象编码方式为 OBJ_ENCODING_ZIPLIST 和 OBJ_ENCODING_SKIPLIST,对应的 底层数据结构为 压缩列表ziplist 和 跳跃表skiplist
zset 在使用 ziplist 作为底层数据结构的时候,每个 集合元素 使用紧挨着的两个压缩列表节点表示,第一个节点 保存元素 成员,第二个节点 保存元素 分值;压缩列表中集合元素都是按照 分值 从小到大 进行排序存储的,分值比较小的放在靠近 表头的方向
而 zset 在使用 skiplist 作为底层数据结构的时候,跳跃表存储部分 之前在 跳跃表 skiplist 篇 写的非常详细了,需要注意的是 每个 zset 结构都是 包含一个 数据字典 和 一个跳跃表
列表类型 作为 Redis 最重要的数据类型之一,广泛使用在 各种列表业务、消息队列 等场景
实际前面我们一直没有提到一种 数据结构 快速列表 quicklist
,就是为了等这一刻,因为 快速列表 是 列表类型的专属 数据结构,而且 其实现 基础
为 压缩列表 ziplist 和 双端链表 ……
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true