首页 > 其他 > 详细

redis4. dict字典

时间:2019-11-27 10:22:48      阅读:68      评论:0      收藏:0      [点我收藏+]

基础数据结构:

技术分享图片

 

 

 (注意dict是字典,dict->type是相关函数指针, dict->type->keyDup是执行该方法)

具体调用链路:

技术分享图片

 

 

 

 

渐进式rehash:

技术分享图片

 

 新增/删除时:

 技术分享图片

 

 查询时:

技术分享图片 

都会进行rehash

所以当dict数据量大的时候,在扩容时,可能会影响set/get的rt

 

 

 

GOOD:https://blog.csdn.net/belalds/article/details/93713491

size 空间大小,used 已使用

技术分享图片

 

 

 

 总体过程:

步骤1:判断是否要扩容:

技术分享图片

 

 

 步骤2:渐进式扩容前准备:

技术分享图片

 

 

 准备方法:

 技术分享图片

步骤3:在增删改查时进行部分rehash工作:

技术分享图片

 

每次增量式的数量:

技术分享图片

 

 

数量为 1* 10:

技术分享图片

 

 这里指的数量(或者说bucket),是指数组元素的个数,每个元素即为一个链表。

可见,当字典数据量大时,假设1000万数据,1:1的情况,那么需要100万次操作才能rehash万。

 

 技术分享图片

 

 系统帮助是每次 100 * 10 = 100个数组元素:

 技术分享图片

 

 

问题:

技术分享图片

 

 

 

redis4. dict字典

原文:https://www.cnblogs.com/do-your-best/p/11903454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!