26人参与 • 2026-02-28 • Redis
redis 的 key 过期数据删除策略是 redis 内存管理的关键部分,它通过 两种主要策略 相结合的方式清理过期数据:
工作原理:
优点:
缺点:
工作原理:
redis 会周期性地(默认每秒 10 次)执行以下操作:
配置参数(redis.conf):
# 每秒执行过期扫描的次数(默认 10) hz 10 # 每次扫描的 cpu 时间百分比上限(默认 25%) # 实际上每次扫描最多 25ms(1000ms/hz * 25%)
优点:
缺点:
当内存达到 maxmemory 限制时,redis 会根据配置的策略删除数据:
# 内存限制(默认不限制) maxmemory <bytes> # 淘汰策略 maxmemory-policy <policy>
淘汰策略选项:
| 策略<policy> | 描述 | 适用场景 |
|---|---|---|
| noeviction | 不淘汰,返回错误 | 数据绝对不能丢失 |
| allkeys-lru | 从所有 key 中使用 lru | 需要缓存效果 |
| volatile-lru | 从带过期时间的 key 中使用 lru | 混合使用 |
| allkeys-random | 随机删除所有 key | 所有 key 同等重要 |
| volatile-random | 随机删除带过期时间的 key | 混合使用 |
| volatile-ttl | 删除即将过期的 key(ttl最小) | 优先保留新数据 |
| allkeys-lfu | 从所有 key 中使用 lfu(4.0+) | 访问频率重要 |
| volatile-lfu | 从带过期时间的 key 中使用 lfu(4.0+) | 混合使用 |

监控过期 key 数量:
# 查看过期 key 相关信息 redis-cli info stats | grep expired_keys
合理配置:
# 根据负载调整 hz 值 hz 100 # 更高频率(更及时清理,更高cpu) hz 1 # 更低频率(更少cpu,可能堆积)
避免大量 key 同时过期:
# 不好的做法:同时设置相同过期时间
for i in range(100000):
redis.set(f"key:{i}", "data", ex=3600)
# 好的做法:添加随机偏移
for i in range(100000):
redis.set(f"key:{i}", "data", ex=3600 + random.randint(0, 300))aof/rdb 持久化:
del 命令主从复制:
del 命令集群模式:
redis 的过期删除策略是 惰性删除 + 定期删除 的组合拳:
这种设计在 cpu 使用率、内存效率和实现复杂性之间取得了良好的平衡,使得 redis 能够高效处理大量带有过期时间的 key。
到此这篇关于redis key过期删除策略使用小结的文章就介绍到这了,更多相关redis key过期删除内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论