首页/数据/数据库速查/过期删除策略(惰性 + 定期)与内存滞留
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条
Redis 运维与场景124 条

过期删除策略(惰性 + 定期)与内存滞留

Redis 不实时删除到期键:访问时惰性删除 + 每秒若干次定期抽样删除;因此过期键可能短期滞留内存(从库更特殊:等主库 DEL)。

数据库速查数据更新于 2026-10-12

观察滞留

观察滞留
INFO keyspace          # expires 与 avg_ttl
# 构造过期键观察:
SET k v EX 10
# 10 秒后:
TTL k                  # -2(已删)
DBSIZE                 # 计数已包含清理结果
# 主动清理访问不到的过期键(扫描治理):
redis-cli --scan | head
惰性删除访问时检查并删除
定期删除hz 参数控制频率(默认 10)
从库过期由主库驱动,从库读到逻辑过期键仍可能返回值
大量键同时到期(缓存雪崩式 TTL)会让定期删除与命令访问双重变慢;TTL 加随机抖动是标准做法。

易错点

  • 以为 TTL 到期内存立即归零:惰性+定期机制存在滞留窗口
  • 把 TTL -2 与 -1 搞混:-2 不存在,-1 永不过期

数据来源与参考

  • Redis 官方文档: 过期时间
  • Redis 官方文档: hz

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌