redis4. dict字典

基础数据结构:

 (注意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个数组元素:

 

问题:

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