Redis 过期删除策略和内存淘汰策略?
Redis 过期删除策略和内存淘汰策略
这是 Redis 核心高频面试题,两者完全不同,一定要区分开:
- 过期删除策略:针对设置了过期时间的 key,到期后怎么删除
- 内存淘汰策略:针对内存使用满了的场景,新数据写入时,怎么删除旧数据腾出空间
下面用最清晰、好记的方式讲清楚👇
一、Redis 过期删除策略
Redis 给 key 设置EXPIRE后,到期不会立刻统一删除,而是用3 种策略组合实现高效清理。
1. 三种过期删除策略
定时删除
- 原理:给每个过期 key 创建定时器,到期立即删除
- 优点:内存释放及时
- 缺点:大量 key 过期时,CPU 压力大,影响 Redis 性能
- Redis不单独使用
惰性删除
- 原理:key 到期不主动删,等到查询时才检查是否过期,过期就删除并返回空
- 优点:对 CPU 最友好
- 缺点:大量过期 key 永远不访问,会一直占用内存(内存浪费)
- Redis使用
定期删除
- 原理:每隔一段时间,随机抽取一批 key 检查,
