美文网首页
redis rehash机制

redis rehash机制

作者: c84f3109853b | 来源:发表于2020-06-09 20:44 被阅读0次

redis触发rehash条件

  • 服务器目前没有在执行BGSAVE命令或者BGREWRITEAOF命令,并且哈希表的负载因子大于或等于1。
  • 服务端目前正在执行BGSAVE命令或者BGREWRITEAOF命令,并且哈希表的负载因子大于或等于5。
  • 当哈希表的负载因子小于0.1时,redis会自动开始对哈希表进行缩容操作。

其中哈希表的负载因子可以通过公式:

# 负载因子 = 哈希表以保存节点数量/哈希表大小
load_factor = ht[0].used / ht[0].size

哈希表渐进式rehash的详细步骤:

  • 为ht[1]分配空间,让字典同时持有ht[0]和ht[1]两个哈希表。
  • 在字典中维持一个索引计数器变量rehashidx,并将它的值设置为0,表示rehash工作正式开始。
  • 在rehash执行期间,每次对字典执行添加、删除、查找或者更新操作时,程序除了执行指定的操作外,还会顺带将ht[0]哈希表在rehashidx索引上的所有键值对rehash到ht[1],当rehash工作完成后,程序将rehashidx属性的值增1。
  • 随着字典操作的不断执行,最终在某个时间点上,ht[0]的所有键值对都会被rehash至ht[1],这时程序将rehashidx属性的值设为-1,表示rehash操作已完成。

相关文章

  • redis rehash机制

    redis触发rehash条件 服务器目前没有在执行BGSAVE命令或者BGREWRITEAOF命令,并且哈希表的...

  • 转载:美团针对Redis Rehash机制的探索和实践

    转载:美团针对Redis Rehash机制的探索和实践 原链接:https://tech.meituan.com/...

  • 思考题

    1.java hashMap和redis map的rehash有什么区别? Java hashMap rehash...

  • 从零手写缓存框架(14)redis渐进式rehash详解

    redis 的 rehash 设计 本文思维导图如下: HashMap 的 rehash 回顾 读过 HashMa...

  • Redis:rehash

    Redis解决键冲突:使用的是链地址法 随着操作的不断执行, 哈希表保存的键值对会逐渐地增多或者减少, 为了让哈希...

  • redis rehash

    Add 如果不在rehash,加在0表如果在rehash,加到1表上 Delete 先删0表。如果在rehash,...

  • Redis rehash

    rehash分扩容和缩容,两个过程互斥 交替使用h0和h1,来回搬迁,类似jvm的s1和s2 dict结构中的re...

  • Redis笔记

    Redis核心技术与实战 rehash·装载因子(entry个数 除以 hash桶个数) 渐进式rehash·每处...

  • redis笔记

    数据结构 SDS 字典 index确定 渐进式rehash 为了缓解一次性rehash带来的性能问题,redis提...

  • 聊聊Redis键值存储结构以及Rehash机制

    一、键值对的结构 了解 Redis 朋友的都知道,Redis 是一种键值对 ( Key-Value Pair ) ...

网友评论

      本文标题:redis rehash机制

      本文链接:https://www.haomeiwen.com/subject/oegetktx.html