redis使用场景——缓存——数据过期策略
惰性删除(Lazy Expiration)
不主动
删除过期数据,而是在数据被访问时才检查并清理。这种方式以延迟删除为代价,减少系统资源的即时消耗,适合对实时性要求不高的场景。
优点 | 缺点 |
---|---|
✅ 节省资源:无后台扫描线程,减少 CPU/内存消耗 | ❌ 内存占用高:过期数据可能长期未被访问,导致内存浪费 |
✅ 实现简单:无需复杂调度逻辑 | ❌ 数据不一致:用户可能读到过期数据(直到下次访问才清理) |
✅ 适合低频访问数据 | ❌ 突发压力:若大量过期数据突然被访问,可能引发瞬时延迟 |
定期删除(Active Expiration)
Redis 会定期
(默认每秒 10 次)随机抽取一些设置了过期时间的 key,检查它们是否过期,如果过期就删除。
1. FAST模式(Fast Expiration Cycle)
FAST模式执行频率不固定,但两次间隔不低于2ms,每次耗时不超过1ms
2. SLOW模式(Slow Expiration Cycle)
SLOW模式是定时任务,执行频率默认为10hz,每次不超过25ms,以通过修改配置文件redis.conf的hz选项来调整这个次数
优点 |
---|
✅ 节省资源:通过限制 删除操作执行的时长 和频率 来减少 删除操作对CPU 的影响 |
✅ 内存效率高:过期数据及时释放,避免长期内存浪费 |
redis的过期删除策略
惰性删除+定期删除
两种策略进行配合使用