Redis缓存过期策略
首先,我们要明白缓存过期的目的是为了在 Key 超过 expire_time 后,从内存中删除,减少内存空间的占用。其次,要分析不同策略的定义、优点和缺点。Redis 的过期策略主要有三种实现方式:
(1)定时删除:
- 定义:对于每一个有过期时间的 Key,创建一个定时器,到过期时间立即删除;
- 优点:保存内存可以尽快释放,减少过期 Key 对内存空间的占用;
- 缺点:占用大量的 CPU 资源去处理定时器,影响缓存的吞吐量,这和 Redis 设计追求性能的设定不符,所以一般不会采用这种策略。
(2)惰性删除:
- 定义:过期的 Key 不做处理,只有当访问这个 Key 时才会判断是否过期,过期则清除;
- 优点:删除操作只有在访存的时候才可能执行,对 CPU 的占用做到了最小。
- 缺点:如果内存中大量的 Key 均过期,且一段时间内没有被访问,会占用大量内存。
(3)定期删除:
- 定义:每隔一段时间全量扫描设置了过期时间的 Key,如果失效则从内存中删除,否则不做处理;
- 优点:通过限制定时的频率,来减少对 CPU 的占用和对内存的占用;
- 缺点:作为一种折中的方案,在内存友好方面,不如定时删除策略;在 CPU 友好方面,不如惰性删除。使用时的表现非常依赖配置的定期频率。
文章来源:https://www.5axxw.com/wiki/content/6u4bot
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)