
文章插图
图片
在Redis 开始执行 ReHash , Redis仍然正常处理客户端请求 , 但是要加入一个额外的处理处理
第1个请求时 , 把哈希表 1中的第1个索引位置上的所有 entries 拷贝到哈希表 2 中
处理第2个请求时 , 把哈希表1中的第2个索引位置上的所有 entries 拷贝到哈希表 2中
如此循环 , 直到把所有的索引位置的数据都拷贝到哈希表 2 中 。
这样就实现了刚才了不起说的 , 把一次大量拷贝的开销 , 分摊到多次处理请求的过程中 , 避免耗时操作 , 保证数据的快速访问 。
关于 渐进式的 ReHash 就说完了 , 那么这个缓存时间戳又是用来干嘛的呢?
缓存时间戳这个缓存时间戳 , 也是 Redis 快的另外一个主要的原因 , 几乎是 ReHash 并列的呀 。
我们在开发中使用时间戳 , 一般都是使用的 System 的方法 , 也就是 currentTimeMillis()来获取时间戳的 , 但是这是我们在 JAVA 代码中的 , 而 Redis 显然不能这么用 , 因为每一次获取系统时间戳都是一次系统调用(涉及到上下文切换) , 所以系统调用相对来说是比较费时间的 , 作为单线程的 Redis 承受不起 , 所以它需要对时间进行缓存 , 由一个定时任务 , 每毫秒更新一次时间缓存获取时间都是从缓存中直接拿 。
而这就是 缓存时间戳 , 所以 , 在面试中如果有面试官问到 Redis 为什么这么快的时候 , 你知道应该怎么回答了么?
【Redis 为什么这么快?】
推荐阅读
- Wi-Fi 7 很强,但为什么手机厂商不敢大力宣传?
- 苋菜为什么炒出来是红的
- 浙江大学生血洗人社局, 导致1死1伤, 怒喊:为什么都要欺负我
- 吃杨桃需要去皮吗 吃杨桃需要去皮吗为什么
- 蘑菇烧汤需要焯水吗 蘑菇烧汤需要焯水吗为什么
- 鹅蛋用水泡了两天还能吃吗 鹅蛋用水泡了两天还能吃吗为什么
- 荷包蛋要放盐吗 荷包蛋要放盐吗为什么
- 为什么女人不能吃椰枣 椰枣需要洗吗
- 茭白需要焯水吗 茭白为什么要焯水
- 明明工作已经很努力了,可还是年年的挣不到钱,为什么呢
