【夯实Redis】Redis过期策略与内存淘汰机制有哪些?
目录
一、过期策略
Redis采用 惰性删除策略 + 定期删除策略。
定时删除策略
在为一个key设置过期时间的同时,也为这个key设置一个倒计时的定时器,时间到了以后定时器把Key删除。
优点:有了定时器自动删除过期的Key,那么可以保证内存快速释放。
缺点:有可能创建了太多的定时器,可能会影响Redis性能。CPU全被用于计时与删除Key了。
惰性删除策略
查询某个Key的时候,先看它是否过期,如果过期了,就直接删除这个Key。
优点:CPU占用少,只在用户取这个Key的时候才去删除Key。
缺点:过期的Key删除不及时,可能会占用了大量内存。
定期删除策略
每过100毫秒就随机选择一些设置了过期时间的Key,检查它们是否过期,如果过期的话就删除它们。
优点:可以及时释放无用Key所占内存
缺点:因为是随机的,有可能有些过期的Key一直没有被删除
二、淘汰机制
Redis是基于内存的,且单线程。如果内存达到了最大内存限制,那么就会清除掉无用的Key。
Redis支持的淘汰策略有6种:
对所有Key来说
allkeys-lru :最少使用的Key被删除
allkeys-random:随即删除
对设置了过期的Key来说:
volatile-lru:最少使用的Key被删除
volatile-ttl:快要过期的Key被删除
volatile-random:随机删除
还有一种
no-enviction:Redis默认淘汰机制。不删除任何Key,新写入指令报错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧