Redis 过期淘汰策略

Redis使用懒惰删除+定期删除相结合的方式处理过期的key

定期删除 -- 大量数据可能无法删除完

当我们为KEY设置了过期时间后,Redis会将所有设置了过期时间的key放入一个字典中,

Redis默认每隔100ms(1s10次扫描,每次扫描默认不会超过25ms)
随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。

可以通过限制删除操作执行的时长和频率,来减少删除操作对cpu的影响。
为了保证不出现循环过度的情况,Redis还设置了扫描的时间上限,默认不会超过25ms。

惰性删除 -- 对内存影响

被动删除,只有当你查找KEY时,Redis会对KEY进行会检查一下 ,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。
并不是key到时间就被删除掉,而是你查询这个key的时候,redis再懒惰的检查一下

淘汰策略

淘汰策略使用在 定期删除和惰性删除后所遗漏的过期KEY,(总是会遗留一些)堆积在内存中,慢慢超过设置的最大内存时,执行淘汰策略

Redis 具体有 6 种淘汰策略:

volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰

volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰

volatile-random:从已设置过期时间的数据集中任意选择数据淘汰

allkeys-lru:从所有数据集中挑选最近最少使用的数据淘汰

allkeys-random:从所有数据集中任意选择数据进行淘汰

noeviction:禁止驱逐数据(直接报错)

posted @   爪哇搬砖  阅读(181)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示