Redis 源码解读之 Rehash 的调用时机

# Redis 源码解读之 Rehash 的调用时机
## 背景和问题
本文想要解决的问题
 1. 什么时机触发 Rehash 操作?
 2. 什么时机实际执行 Rehash 函数?
## 结论
1. 什么时机触发 Rehash 操作?
> * **缩容**: Redis 定时任务 `serverCron` 会在每个周期内检查 bucket 的使用情况。当存放 key 的数量和总 bucket 数的比例是否小于 `HASHTABLE_MIN_FILL(10%)`,触发缩容 Rehash 操作。
> * **扩容**:在每次调用 `dictAddRaw` 新增数据时,会检查 bucket 的使用比例。扩容的条件是以下之一:
> * `dict_can_resize = 1` (该参数会在有 COW 操作的子进程运行时更新为 0,防止在子进程操作过程中触发 Rehash,导致内核进行大量的 Page 复制操作)
> * 当前存放的 key 的数量与 bucket 数量的比例超过了 `dict_force_resize_ratio(5)`

2. 什么时机实际执行 Rehash 函数?
> * **定时任务**: Redis 定时任务 `serverCron` 会在每个周期内执行 1ms 渐进式Rehash 操作。
> * **附着于其他操作**:在 Redis 执行 `dictAddRaw`, `dictGenericDelete`, `dictFind`, `dictGetSomeKeys` 和 `dictGetRandomKey` 等操作前会执行 Rehash 操作。

## 源码分析
Redis Rehash机制
#技术交流##Redis#
全部评论
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Redis 源码解读之 Rehash 的调用时机》, 一起来围观吧 https://blog.csdn.net/yanglingwell/article/details/114626169?utm_source=app&app_version=4.5.4
点赞 回复 分享
发布于 2021-03-14 09:19

相关推荐

07-25 11:12
重庆大学 C++
既然这么缺人,为什么挂我呢
飞花断音:华为需要学历不高,但是很能干事儿,能吃苦也没怨言,愿意无偿加班,最好上有老下有小,不是独生子女,家庭条件不好,家在外地租房住,生活成本高,不会轻易跳槽,并且愿意接受低工资的奴仆任劳任怨地给任总的女儿买大别墅住
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
盖茨伯爵:一样兄弟,我从4月开始发到现在了,都三四百个了
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务