MST

星途 面试题库

面试题:Redis复制功能中主从节点对过期键处理方式有何不同

在Redis的复制功能里,阐述主节点和从节点分别是如何处理过期键的,以及这种处理方式对数据一致性有什么影响?
27.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

主节点处理过期键方式

  1. 定期删除:主节点会定期随机抽取一部分设置了过期时间的键,检查这些键是否过期,如果过期则删除。这是一种通过牺牲一定CPU时间来换取内存空间的策略,避免了大量过期键占用过多内存。
  2. 惰性删除:当客户端访问一个键时,主节点会检查该键是否过期。如果过期,就会删除该键并返回相应信息(如nil)。这种方式不会主动删除过期键,只有在访问时才进行检查和删除,减少了删除操作对CPU的影响。

从节点处理过期键方式

  1. 从节点不会主动处理过期键,即使键已经过期,从节点也不会对其进行定期删除或惰性删除操作。
  2. 从节点过期键的删除完全依赖主节点。当主节点删除一个过期键后,会向所有从节点发送一个DEL命令,从节点接收到该命令后才会删除相应的键。

对数据一致性的影响

  1. 短期不一致:由于从节点不会主动删除过期键,在主节点删除过期键但还未将DEL命令发送到从节点这段时间内,主从节点数据存在不一致。此时从节点可能返回已过期但尚未删除的键对应的值,而主节点则返回nil
  2. 最终一致性:从节点接收到主节点发送的DEL命令后,会删除相应过期键,从而保证主从节点数据最终达到一致。在高并发环境下,从节点可能会短时间内返回过期数据,但随着主节点DEL命令的传播,这种不一致情况会得到解决。