Redis知识梳理——数据结构

Redis共有5中主要的数据结构

1,String字符串

2,List 列表

3,dict字典

4,set 集合

5,sortset 有序集合

1,String

2,list 列表

Redis的list 有两种实现方式1 ziplist(压缩列表)2 双向循环链表

当ziplist要求单个元素的大小不超过64byte 当数据个数小于 512个时 使用ziplist 否则使用双向循环链表

3,dict字典

同样 dict表也有两种实现方式 ziplist 和 散列表

当单个元素小于64byte 元素个数小于512时使用ziplist 否则使用hashtable

redis的hash 现实使用murmurhash2作为hash算法 速度快,当装载因子大于1时对hash表进行扩容,当装载因子小于0.1时进行缩容。对于hash值相同的hash冲突使用链表解决。扩容时扩容为当前的2倍,使用逐步分批搬迁数据,防止长耗时造成服务延时,当后续有hget/hdel查找更新等对当前hash的操作时逐步迁移,如果没有后续操作,redis也会进行定时迁移。

4,set

集合

和dict使用的数据结构相同

5,sortset

有序集合,集合中每个value对应一个score

当数据单个大小小于64btye 个数小于128时,使用ziplist

否则使用 hashtable + 跳表实现 可快速取得对应value分值 及排行区间数据 hash存储value 跳表存储score和value的指针

跳表--基于链表(应该是双向链表) 筛选链表节点建立多级区间索引,使查找效率提升为o(logn);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容