2023-06-17:说一说redis中渐进式rehash?

news/2024/10/22 18:42:03/

2023-06-17:说一说redis中渐进式rehash?

答案2023-06-17:

在Redis中,如果哈希表的数组一直保持不变,就会增加哈希冲突的可能性,从而降低检索效率。为了解决这个问题,Redis会对数组进行扩容,通常是将数组大小扩大为原来的两倍。然而,这个扩容过程会引起元素在哈希桶中的分散,导致元素的移动。由于元素移动会涉及IO操作,所以这个重新哈希(ReHash)过程可能会导致许多请求被阻塞。

渐进式rehash

为了避免这个问题,Redis 采用了渐进式 rehash。

在Redis中,默认使用两个全局哈希表:哈希表1和哈希表2。最初,当你开始插入数据时,只使用哈希表1,而哈希表2没有分配空间。随着数据逐渐增多,Redis开始执行渐进式rehash的过程。

1、为哈希表2分配更大的空间,例如是当前哈希表1大小的两倍。

2、将哈希表1中的数据重新映射并拷贝到哈希表2中,确保每个元素都被正确地存储在新的哈希桶位置上。

3、释放哈希表1的空间,将其回收以便于系统的正常运行。

在上述的第二步中,涉及到大量的数据迁移和拷贝操作。如果一次性将哈希表1中的所有数据都迁移到哈希表2,将导致Redis线程被阻塞,无法提供对其他请求的服务。这将导致Redis无法快速地访问数据。

image.png

在Redis开始执行rehash时,Redis仍然可以正常处理客户端请求。然而,在处理每个请求时,Redis还会额外执行以下操作:

  • 处理第一个请求时,将哈希表1中第一个索引位置上的所有条目拷贝到哈希表2中。

  • 处理第二个请求时,将哈希表1中第二个索引位置上的所有条目拷贝到哈希表2中。

  • 如此循环,直到将所有索引位置上的数据都成功拷贝到哈希表2中。

通过将大量数据拷贝的操作分摊到处理请求的过程中,Redis巧妙地避免了一次性的大量数据拷贝开销,从而保证了数据的快速访问。这种处理方式确保了根据键寻找值的操作大致在O(1)的时间复杂度范围内进行。通过渐进式rehash和分步式数据迁移,Redis能够在维持性能的同时,实现平滑的哈希表扩容和数据迁移。


http://www.ppmy.cn/news/439576.html

相关文章

Kibana安装(Linux)

Kibana安装(Linux) 概述安装kibana 概述 Kibana 是一款多用于 Elasticsearch的 数据可视化开源工具。 在使用时,最好与ES版本同步,这里接着上一节,使用 kibana-7.14.0 安装kibana 下载解压 tar -zxvf kibana-7.14.…

XSS—存储型xss

xss >跨站脚本攻击>前端代码注入>用户输入的数据会被当做前端代码执行。 原理:使用者提交的XSS代码被存储到服务器上的数据库里或页面或某个上传文件里,导致用户访问页面展示的内容时直接触发xss代码。 输入内容后直接在下方回显,回…

三星+android+7.0+自动纠正单词,后悔:测试显示三星S7 Edge升级安卓7.0后续航暴降...

IT之家2月6日消息 三星从1月开始陆续为Galaxy S7、S7 Edge推送了Android 7.0(Nougat)系统更新,升级后的功能增加和提升不少,不过新系统也并不是十全十美,有用户反馈升级后的手机续航时间明显减少。 对此,国外媒体进行了针对性测试…

三星s5能升级到android7.0,三星这些手机能升级安卓7.0,新老用户都得看看

前些天,使用三星Exynos 8890处理器的欧版三星S7/S7 edge Beta开发版用户已经收到正式版Android 7.0更新,国行版三星S7/S7 edge却没有更新消息。不过最近有消息显示国行版可能会在24号收到该更新,并且三星这次将会对旗下大部分机型进行Android…

三星谷歌Android7,台版三星S7系列已推送Android7.0 国行版不远了

【TechWeb报道】2月17日消息,有的用户在购买新机是可能关注的是外观颜值,而有的用户不仅在颜值上更是在配置性能上或许更为关注。目前,不少手机厂商的手机已经预装了Android7.0。而在最近,有消息爆料,台版的三星Galaxy…

android 7.0 三星,三星S7 Edge升级Android 7.0续航测试:超后悔

每当谷歌发布新一代Android系统时,不少手机用户就希望厂商能够尽快推送更新进行升级。但有时候升级至最新版系统可能并不是一件好事。 近日,三星为旗下Galaxy S7系列手机推出了Android 7.0(Nougat)升级更新。不过在一项标准测试当中发现,升级…

android7.0彩蛋 三星,三星S7 edge刷入安卓7.0后,性能上面有彩蛋

原标题:三星S7 edge刷入安卓7.0后,性能上面有彩蛋 【PConline 资讯】安卓7.0上个月发布后,除了谷歌的直系亲儿子获得了最先更新,紧跟其后的一些大厂也纷纷对旗下的旗舰机进行了更新,三星就很快地给自家的三星S7系列进行了安卓7.0更…

三星android6.0sd卡,三星S7新福利 支持TF卡扩展你乐坏了吗

MWC2016已经过半,不少顶级旗舰正式发布了,其中最具代表性的就是三星Galaxy S7和Galaxy S7 Edge了。它们搭载了Exynos 8890/高通骁龙820处理器,4GB内存等顶级旗舰配置,屏幕支持“Always On”常显特性,同时也将支持IP 68…