MST

星途 面试题库

面试题:Redis渐进式rehash中,如何解决在rehash过程中读写操作的一致性问题

在Redis渐进式rehash期间,数据会在新旧两个哈希表之间逐步迁移。请阐述在这个过程中,Redis是如何保证读写操作的数据一致性的,即读操作能获取到最新的数据,写操作也能正确更新数据,不会因为部分数据在旧表,部分在新表而出现混乱。
27.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试
  1. 读操作
    • Redis在渐进式rehash过程中,读操作会先尝试从新哈希表中读取数据。如果在新哈希表中没有找到对应的键值对,再去旧哈希表中查找。这样就保证了读操作能够获取到最新的数据,因为新写入的数据会优先存放在新哈希表中。
  2. 写操作
    • 对于写操作,无论是插入新数据还是更新现有数据,Redis都会将数据写入到新哈希表中。如果在写操作时发现部分数据还在旧哈希表中,这并不影响新数据的写入。新数据的写入操作只针对新哈希表,从而确保了写操作的正确性,不会因为旧表中有部分数据而出现混乱。
    • 在渐进式rehash完成后,旧哈希表会被释放,此时整个数据存储就完全基于新哈希表,读写操作也都在新哈希表上进行。