八、Redis 过期策略与淘汰机制:深入解析与优化实践
Redis 过期策略与淘汰机制:深入解析与优化实践
Redis 作为基于内存的高性能数据库,如何管理过期的键(key)和当内存不足时如何淘汰数据,是影响 Redis 性能和稳定性的关键因素。本篇文章将深入解析 Redis 的过期 key 处理方式和数据淘汰策略,并结合实际应用场景,帮助开发者制定最优策略。
1. 过期 key 处理方式
1.1 key 过期的定义
在 Redis 中,键(key)可以设置过期时间(TTL, Time To Live),即当指定时间到达时,该 key 会被删除。例如:
SET session:user:123 "data" EX 60 # 60 秒后过期
当 60 秒后,该 key 将被 Redis 标记为过期,但具体的删除方式依赖于过期策略。
1.2 Redis 的三种过期 key 删除策略
Redis 提供了以下三种方式处理过期 key:
(1)惰性删除(Lazy Deletion)
- 原理:只有在客户端访问 key 时,Redis 才会检查其是否过期,并在发现过期后删除。
- 优点:减少 CPU 资源消耗,不会主动清理内存。
- 缺点:过期 key 如果长期不被访问,就会一直占用内存,导致内存浪费。
- 适用场景:缓存场景,如会话管理(Session)