扫码阅读
手机扫码阅读
Redis 的过期策略都有哪些?

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。


springboot葵花宝典
扫码关注公众号
Redis 的过期策略摘要
1. Redis数据删除策略
1.1 惰性删除
惰性删除是在设置key过期时间后,只有当该key被访问时才会检查其是否过期。如果过期则删除,否则返回该key。
优点:对CPU友好,仅对使用的key进行检查。
缺点:对内存不友好,过期但未访问的key会一直占用内存。
1.2 定期删除
定期删除每隔一段时间检查部分随机key,并删除过期key。分为两种模式:
- SLOW模式:默认每秒执行10次,每次耗时不超过25ms,可通过修改配置文件调整频率。
- FAST模式:频率不固定,但两次间隔不少于2ms,每次耗时不超过1ms。
优点:减少对CPU的影响,同时释放过期键占用的内存。
缺点:难以确定删除操作的执行时长和频率。
2. Redis内存淘汰策略
当内存不足时,Redis会根据某种规则删除数据以腾出空间。支持以下8种策略:
- noeviction:不淘汰key,内存满时拒绝写入新数据。
- volatile-ttl:优先淘汰TTL值较小的key。
- allkeys-random:随机淘汰任意key。
- volatile-random:随机淘汰有TTL的key。
- allkeys-lru:基于LRU算法淘汰任意key。
- volatile-lru:基于LRU算法淘汰有TTL的key。
- allkeys-lfu:基于LFU算法淘汰任意key。
- volatile-lfu:基于LFU算法淘汰有TTL的key。
2.1 LRU与LFU算法
LRU(最近最少使用):根据最后一次访问时间,优先淘汰访问时间较久的key。
LFU(最少频率使用):根据访问频率,优先淘汰访问次数较少的key。
2.2 使用建议
- 如果数据有明显冷热区分,优先使用 allkeys-lru 策略。
- 如果数据访问频率差别不大,建议使用 allkeys-random 策略。
- 如果需要置顶数据,可使用 volatile-lru 策略,同时置顶数据不设置过期时间。
- 如果有短时高频访问数据,可使用 allkeys-lfu 或 volatile-lfu 策略。
3. 面试题总结
- Redis的数据过期策略:包括惰性删除和定期删除,两者配合使用。
- Redis的数据淘汰策略:支持8种策略,推荐根据业务需求选择合适的淘汰算法(如LRU或LFU)。
- 热点数据保证:使用 allkeys-lru 策略可保证缓存的都是热点数据。
- 内存耗尽处理:默认设置会直接报错,可通过淘汰策略释放空间。
想要了解更多内容?


springboot葵花宝典
扫码关注公众号
springboot葵花宝典的其他文章
Spring Boot starter总结
spring boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置。
SpringSecurity-OAuth2万文详解
SpringSecurity-OAuth2万文详解Oauth2.0是目前流行的授权机制,用于授权第三方应用,
万文总结Java基础之集合相关内容
万文总结Java基础之集合相关内容主要涉及到主要涉及到的是List和Map相关的面试题,比较高频就是\x0d\x0a- ArrayList\x0d\x0a- LinkedList\x0d\x0a- HashMap\x0d\x0a- ConcurrentHashMap
Spring-3-掌握Spring事务传播机制
掌握Spring事务传播机制\x26quot;:深入解析Spring事务传播机制,并结合实例演示各种传播行为,帮助读者正确理解和应用事务传播。
保护用户隐私:Spring Boot 数据脱敏实战
保护用户隐私:Spring Boot 数据脱敏实战
加入社区微信群
与行业大咖零距离交流学习


PMO实践白皮书
白皮书上线
白皮书上线