首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Redis 缓存过期策略和内存淘汰策略
返回列表
发新帖
Redis 缓存过期策略和内存淘汰策略
[复制链接]
发表于 2023-2-27 23:21:28
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
缓存过期策略
定时删除
没人用
含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除
优点:该策略可以立即清除过期的数据, 保证内存被尽快释放
缺点:若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key 定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),
性能
影响严重
惰性删除
内置策略
含义:key过期的时候不删除,只有当访问这个key的时候才去判断缓存是不是过期,若过期,则删除,返回null。
优点:删除操作只发生在从
数据库
取出key的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步(如果此时还不删除的话,我们就会获取到了已经过期的key了)
缺点:对内存非常不友好,若大量的key在超出超时时间后没有被访问,长时间过去可能发生内存泄露(无用的垃圾占用了大量的内存)
定期删除
含义:每隔一定的时间,会扫描一定数量的的key,并清除其中已经过期的key (在redis.conf
配置
文件设置hz,1s刷新的频率)
该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果
缺点: 在内存友好方面,不如"定时删除";在CPU时间友好方面,不如"惰性删除" 难点:合理设置删除操作的执行时长(每次删除执行多长时间)和执行频率(每隔多长时间做一次删除)(这个要根据
服务器
运行情况来定了)
看完上方三种可以得到结论
: 定时删除和定期删除为主动删除,Redis会定期主动淘汰一批已过去的key;惰性删除为被动删除:用到的时候才会去检验key是不是已过期,过期就删除
惰性删除为redis
服务器
内置策略
定期删除可以通过:
第一、
配置
redis.conf 的hz选项,默认为10 (即1秒执行10次,100ms一次,值越大说明刷新频率越快,最Redis
性能
损耗也越大)
第二、
配置
redis.conf的maxmemory最大值,当已用内存超过maxmemory限定时,就会触发主动清理策略
内存淘汰策略
Redis的内存淘汰策略
noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。该策略是Redis的默认淘汰策略,一般不会选用。
allkeys-lru:当内存不足以容纳新写入数据时,基于LRU算法,从所有key中,移除最近最少使用的key。
allkeys-random:当内存不足以容纳写入数据时,从所有key中,随机移除某个key,这个一般没人用。
allkeys-lfu:当内存不足以容纳写入数据时,基于LFU算法,从所有key中,删除掉最不经常使用(使用次数最少)的key。
volatile-lru:当内存不足以容纳写入数据时,基于LRU算法,在设置了过期时间的key中,移除最近最少使用的key。
volatile-random:当内存不足以容纳写入数据时,在设置了过期时间的key中,随机移除某个key。
volatile-ttl:当内存不足以容纳写入数据时,在设置了过期时间的key中,(剩余存活时间最短)的key删除掉。
volatile-lfu:当内存不足以容纳写入数据时,基于LFU算法,从设置了过期时间的key中,删除掉最不经常使用(使用次数最少)的key。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
返回列表
浏览过的版块
人工智能
开源技术
自由的羽毛
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表