底层实现:
sds简单动态字符串:
动态:使用内存+空闲内存;
简单:字符串封帧
通用:保存文本或二进制数据
安全:检查缓冲区溢出
链表:
顺序访问、增删
字典:
key访问
hash表,链表解决冲突
负载因子出发rehash
转移成本均摊:索引计数器0-n逐个索引转移 #更细粒度:逐个key转移——读时转移、写时转移
跳表:
有序
节点随机向上层传递
整数集合
集合无重复
有序,查元素二分,交并补归并
数据结构升级
压缩列表
内存连续分配(数据+下|上个元素偏移)+小对象聚集
复杂度的价值体现在相对较大的问题规模,问题较小时,权衡内存使用量
连锁更新
对象:用于表示键值。对象X编码=实现 存在转换:升级
字符串对象
int 整数
raw sds
embstr 只读 短字符串,聚集在一块连续内存
列表对象
ziplist 限制条件:单元素大小上限、元素数量
linkedlist
哈希对象
ziplist
hashtable
集合对象
intset
hashtable:仅使用key
有序集合对象
ziplist
skiplist+hashtable:指针共享元素
对象回收:引用计数(对象共享)+过期时间(空转时间)
原文:https://www.cnblogs.com/qmc2077/p/11670172.html