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);

你可能感兴趣的:(Redis知识梳理——数据结构)