2024-05-02  阅读(67)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/8887296397

回答

这里要分为主节点和从节点两个部分介绍。

主节点对过期键的处理

Redis 主节点对过期键的处理采用一种“延迟释放”的策略,当 key 过期后,它的内存并不一定会立刻释放,而是等待合适的机会再释放。这种“延迟释放”的策略,Redis 有两种方案:

  • 惰性删除:当你尝试访问一个 Key 时,Redis 会首先检查这个 Key 是否过期,如果过期则返回 null 并删除它,如果没有过期则返回数据。
  • 定期删除:Redis 每隔一段时间随机抽取一部分过期数据,然后删除这些过期数据。

Redis key过期了,为什么内存没释放呢?

从节点对过期键的处理

在主从架构中,从节点对过期键的处理会有一点特殊。

从节点上 key 的过期时间和主节点保持一致,但即便 key 已过期,从节点也不会主动地去删除这些过期的 key,而是通过同步主节点的删除操作来进行。无论主节点是通过惰性删除还是定期删除,这个删除操作会被记录在主节点的 AOF 文件中(如果已开启 AOF),同时也会同步这个命令给从节点。