开发者社区> 问答> 正文

采用渐进式rehash具有哪些条件?

已解决

采用渐进式rehash具有哪些条件?

展开
收起
游客lmkkns5ck6auu 2022-10-11 20:31:13 290 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    1)扩容条件

    我们的扩容一般会在Hash表中的元素个数等于第一维数组的长度的时候,就会开始扩容。扩容的大小是原数组的两倍。不过在Redis在做bgsave(RDB持久化操作的过程),为了减少内存页的过多分离(Copy On Write),Redis不会去扩容。但是如果hash表的元素个数已经到达了第一维数组长度的5倍的时候,就会强制扩容,不管你是否在持久化。

    不扩容主要是为了尽可能减少内存页过多分离,系统需要更多的开销去回收内存。

    2)缩容条件

    当我们的hash表元素逐渐删除的越来越少的时候。Redis于是就会对hash表进行缩容来减少第一维数组长度的空间占用。缩容的条件是元素个数低于数组长度的10%,并且缩容不考虑是否在做Redis持久化。

    不用考虑bgsave主要是因为我们的缩容的内存都是已经使用过的,缩容的时候可以直接置空,而且由于申请的内存比较小,同时会释放掉一些已经使用的内存,不会增大系统的压力。以上内容摘自《阿里开发者手册-Redis专题》电子书,点击https://developer.aliyun.com/ebook/download/7770 可下载完整版

    2022-10-12 23:34:54
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载