WangFuJie Blog

路在脚下,心向远方

Redis源码阅读 - Redis事件驱动模型(一)

Redis事件驱动模型(一)

Redis在进行网络通信的实现时分为了四层,其中网路基础设施封装了socket模型,也封装了sock套接字。日常我们大多使用TCP协议,因此本文只重点介绍了对Socket的封装。 Redis使用了事件循环机制,底层利用了IO多路复用。考虑到对不同平台的兼容,提供了统一的API接口。

Redis源码阅读 - Redis对象处理机制

Redis对象处理机制

redisObject(robj)是 Redis 内部统一的数据对象结构,用来封装所有值类型(如 String、List、Hash、Set、ZSet)。redisObject 相当于 Redis 数据的统一“对象头”,负责描述数据类型、编码方式和生命周期,而真正数据存放在 ptr 指向的结构中。

Redis源码阅读 - Redis数据结构基数树(rax)

Redis数据结构基数树(rax)

rax全称为 Radix Tree,也叫基数树,属于前缀树的一种。前缀树 的特点是适合保存具有相同前缀的数据,从而实现节省内存空间的目标,以及支持范围查询。

Redis源码阅读 - Redis数据结构快速列表(quicklist)

Redis数据结构快速列表(quicklist)

quicklist 的设计,其实是结合了链表和 listpack 各自的优势。简单来说,一个 quicklist 就是一个双向链表,而链表中的每个元素又是一个 listpack,配合使用解决了listpack的大内存拷、内存移动,插入删除时间复杂度高等问题。

Redis源码阅读 - Redis数据结构紧凑列表(listpack)

Redis数据结构紧凑列表(listpack)

listpack 也叫紧凑列表,它的特点就是用一块连续的内存空间来紧凑地保存数据,同时为了节省内存空间,listpack 列表项使用了多种编码方式,来表示不同长度的数据,这些数据包括整数和字符串。它是ziplist的替代品,解决了ziplist的级联更新问题。