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-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
八股刚起步,看了javaguide,小林coding,还有面渣,感觉面渣是体验最好的,请问只看面渣够用吗,有不完善的需要补吗?
码农索隆:先背最基础的知识,然后理解情景题,现在面试大多数喜欢问情景题,更考验面试者的基础和临场发挥情况
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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