Redis 原理 - 数据结构拾遗
条目索引
条目正文
编码方式
11种编码方式

IntSet 整数集合
1.1 IntSet: 有序(二分) 且唯一,
1.2 扩容时如果编码不合适自动升级编码: 并且倒序copy
QuickList
图解
1.QuickList引入解决大量数据的关联问题
1.1优化
限制ziplist的entry数量
压缩中间节点: 由于首位访问比较多, 因此通常不会进行压缩
源码

RedisObject
1.
redisObject 总共占用 0.5 bytes + 0.5 bytes + 3 bytes + 4 bytes + 8 bytes = 16 bytes(字节)。
SDS 动态字符串
1.动态字符串SDS ( C语言实现的string毛病太多 )
sds不以”\0”为字符串结束的表示,
而是将在sds中添加len字段记录其长度以期实现二进制安全的目的
Sds
redisObject 总共占用 0.5 bytes + 0.5 bytes + 3 bytes + 4 bytes + 8 bytes = 16 bytes(字节)。
+len + alloc + flags + \0—>64-20=44
动态扩容能力:会预分配

SkipList

1.
1.1 结构如下

ZipList
1.ZipList 双端链表
1.1 ZipListEntry

由于计算机是由低地址向高地址存储,
但是人类的阅读书写顺序是从左往右,
电脑存储数据时,如果遇到高位低地址的数据就要先reverse成: 低位低地址–>高位高地址

1.1.1 字符串编码
1.1.2 整数编码
2.1连锁更新问题

大多数的entry都很小, 因此连锁更新的概率不大