数据库
首页 > 数据库> > Redis | 第一部分:数据结构与对象 中篇《Redis设计与实现》

Redis | 第一部分:数据结构与对象 中篇《Redis设计与实现》

作者:互联网

目录


前言

参考资料:《Redis设计与实现 第二版》;

本篇笔记按照书里的脉络,将知识点分为四个部分。其中第一部分数据结构与对象分为上中下篇,上篇包括:SDS链表字典;中篇包括跳跃表整数集合压缩列表;下篇为对象

上篇的链接:https://www.cnblogs.com/dlhjw/p/15569578.html


1. 跳跃表

1.1 跳跃表与其节点的定义

1.2 跳跃表的API

函数 作用 时间复杂度
zslCreate 创建一个新的跳跃表 O(1)
zslFree 释放给定跳跃表,以及表中包含的所有节点 O(N),N为跳跃表的长度
zslInsert 将包含给定成员和分值的新节点添加到跳跃表中 平均O(logN),最坏O(N),N为跳跃表长度
zslDelete 删除跳跃表中包含给定成员和分值的节点 平均O(logN),最坏O(N),N为跳跃表长度
zslGetRank 返回包含给定成员和分值的节点在跳跃表中的排位 平均O(logN),最坏O(N),N为跳跃表长度
zslGetElementByRank 返回包含给定成员和分值的节点在跳跃表中的排位 平均O(logN) ,最坏O(N),N为跳跃表长度
zslIsInRange 给定一个分值范围(range),比如0到15,20到28,诸如此类,如果给定的分值范围包含在跳跃表的分值范围内,返回1,否则返回0 O(1),基于通过跳跃表的表头节点和表尾节点的分值得到范围
zslFirstInRange 给定一个分值范围,返回跳跃表中第一个符合这个范围的节点 平均O(logN),最坏O(N),N为跳跃表长度
zslLastInRange 给定一个分值范围,返回跳跃表中最后一个符合这个范围的节点 平均O(logN),最坏O(N),N为跳跃表长度
zslDeleteRangeByScore 给定一个分值范围,删除跳跃表中所有在这个范围之内的节点 O(N),N为被删除节点数量
zslDeleteRangeByRank 给定一个排位范围,删除跳跃表中所有在这个范围之内的节点 O(N),N为被删除节点数量

2. 整数集合

2.1 整数集合的实现

整数集合逻辑图

2.2 整数集合的类型升级

2.3 整数集合的API

函数 作用 时间复杂度
intsetNew 创建一个新的整数集合 O(1)
intsetAdd 将给定元素添加到整数集合里面 O(N)
intsetRemove 从整数集合中移除给定元素 O(N)
intsetFind 检查给定值是否存在于集合 O(logN),整数集合有序排列,可以用二分查找法
intsetRandom 从整数集合中随机返回一个元素 O(1)
intsetGet 取出底层数组在给定索引上的元素 O(1)
intsetLen 返回整数集合包含的元素个数 O(1)
intsetBlobLen 返回整数集合咱用的内存字节数 O(1)

3. 压缩列表

3.1 压缩列表的结构

3.2 压缩列表节点的定义

encoding的属性

3.3 连锁更新

3.4 压缩列表的API

函数 作用 时间复杂度
ziplistNew 创建一个新的压缩列表 O(1)
ziplistPush 创建一个包含给定值的新节点,并将这个新节点添加到压缩列表的表头或表尾 平均O(N),最坏O(N2)
ziplistInsert 将包含给定值的新节点插入到给定节点之后 平均O(N),最坏O(N2)
ziplistIndex 返回压缩列表给定索引上的节点 O(N)
ziplistFind 在压缩列表中查找并返回包含了给定值的节点 当保存的是字节数字时为O(N2),整数时为O(N)
ziplistNext 返回给定节点的下一个节点 O(1)
ziplistPrev 返回给定节点的前一个节点 O(1)
ziplistGet 获取给顶节点说保存的值 O(1)
ziplistDelete 从压缩列表中删除给定的节点 平均O(N),最坏O(N2)
ziplistDeleteRange 删除压缩列表在给定索引上的连续多个节点 平均O(N),最坏O(N2)
ziplistBlobLen 返回压缩列表目前占用的内存字节数 O(1)
ziplistLen 返回压缩列表目前包含的节点数量 节点数量小于65535时为O(1),大于65535时为O(N)


最后

新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

标签:中篇,Redis,整数,列表,集合,给定,跳跃,数据结构,节点
来源: https://www.cnblogs.com/dlhjw/p/15582039.html