Redis过期策略与内存淘汰机制协同工作:前者用惰性+定期删除处理到期数据,后者在maxmemory触发时按策略(如allkeys-lru)淘汰key;二者分属时间与空间维度,不可替代。

Redis 数据过期策略和内存淘汰机制是两套独立但协同工作的机制:前者解决“数据什么时候失效”,后者解决“内存不够时删谁”。它们不互为替代,而是分阶段配合——先靠过期策略清理自然到期的数据,再靠淘汰机制兜底应对内存压力。
Redis 不采用“一到时间就立刻删除”的定时删除(避免单线程阻塞),而是用两种轻量方式组合处理:
注意:主库负责过期判断与触发 del 指令,从库只同步执行,存在短暂主从不一致风险;所有过期 key 都存于独立的 expires 字典,不影响主键空间查询效率。
当 Redis 实际内存使用达到 maxmemory 限制(如 maxmemory 256mb)时,写入新数据前会触发淘汰。策略通过 maxmemory-policy 配置,常见选项有:
淘汰不是实时逐个扫描全量 key,而是采样(默认 5 个)后近似计算,兼顾性能与效果。
过期策略关注的是“时间维度”——键是否到了 TTL 终点;内存淘汰关注的是“空间维度”——当前能否腾出位置写新数据。
noeviction 策略,过期键不及时清理 + 内存打满,就会直接写失败;所以生产环境通常搭配 allkeys-lru 或 volatile-lru,并合理设置 hz(建议 10–25)基本上就这些。理解清楚这两层机制的分工和边界,才能避免缓存击穿、内存溢出或误删有效数据的问题。
以上就是Redis数据过期策略是什么 Redis内存淘汰机制【解析】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号