自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 redis源码解析-基础数据-skiplist(跳跃表)

太长不看版跳跃表是有序集合的底层实现之一, 除此之外它在 Redis 中没有其他应用。每个跳跃表节点的层高都是 1 至 64 之间的随机数层高越高出现的概率越低,层高为i的概率为(1−p)∗pi−1,(p=1/4)(1-p) * p^{i-1}, (p=1/4)(1−p)∗pi−1,(p=1/4)。跳跃表中,分值可以重复, 但对象成员唯一。分值相同时,节点按照成员对象的大小进行排序。...

2019-11-26 13:57:35 757 4

原创 Redis源码解析-基础数据-qulicklist(快速列表)

太长不看版快速列表是一个元素为压缩列表的双向链表。快速列表是列表对象list的底层实现之一。快速列表是在Redis3.2版本引入的。快速列表节点中压缩列表的最大字节长度(配置项为负数时)或最多元素个数(配置项为正数时)由配置项 list-max-ziplist-size 决定,默认约束为最大长度8Kb。快速列表提供了选项可以使用LZF压缩算法对中间的节点中的ziplist进行压缩,列...

2019-12-14 20:46:32 211

原创 Redis源码解析-基础数据-ziplist(压缩列表)

太长不看版压缩列表是一种为节约空间而实现的线性数据结构,本质是字节数组。压缩列表元素可以为整数或字符串。压缩列表在快速列表、列表对象和哈希对象中都有使用。压缩列表添加(平均复杂度O(n))与删除节点(平均复杂度O(n)),可能会触发连锁更新(平均复杂度O(n^2)),因为触发机率不高所以不影响性能。因为节点存在字符串,字符串匹配为O(n)复杂度,所以压缩列表查找节点平均复杂度为O(n...

2019-12-03 22:24:11 482

原创 redis源码解析-基础数据-dict

太长不看版redis字典底层使用哈希表实现使用除留余数法进行散列,用到了SipHash算法使用单独链表法解决冲突通过扩张(首个大于2 * used的2n2^n2n)与收缩(首个大于used的2n2^n2n)哈希表维持载荷因子合理。有持久化子进程时因子>=5 扩张,不能收缩。无持久化进程时,因子 >= 1扩张, < 0.1收缩。rehash操作是渐进处理的,分散在触...

2019-11-10 15:52:50 214

原创 redis源码解析-基础数据-sds(simple dynamic string)

太长不看版redis内部使用sds(自己封装的结构体)作为默认字符串类型sds中len字段记录字符串长度,可以常数复杂度获取长度sds使用len来判断字符串是否结束,实现了二进制安全修改sds时会按需分配内存大小,杜绝缓冲区溢出sds空间扩展时会进行预申请,减少内存分配次数预申请策略: 1M以内, 每次为len * 2,超过1M每次为 len + 1Mredis内部实现中没有...

2019-11-04 00:43:04 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除