Redis过期删除策略和内存淘汰策略

本文详细阐述了Redis的过期删除策略(惰性删除和定期删除),以及内存淘汰的两种方式(不淘汰和基于过期时间或使用频率淘汰)。重点在于如何平衡内存使用和性能优化以防止内存溢出。
摘要由CSDN通过智能技术生成

Redis过期删除策略

如果一直往内存里加key,内存会爆,所以有了过期时间,设置了过期时间的key会被保存到过期字典

惰性删除+定期删除

Redis的过期删除策略是惰性删除和定期删除搭配。先来分开说说
惰性删除:顾名思义,懒惰,不主动去删,在每次访问key的时候,查看key是否过期。
优缺点:CPU友好、内存不友好
定期删除:每隔一段时间随机从Redis数据库取一些key检查,删除过期的key。
抽取的数量是20个key,如果过期的key占比到1/4,就再抽20个查。
这个循环啥时候停?
要么抽到的key里过期的不超过1/4了
要么设置循环流程的上限时间
优点:内存友好
缺点:

  • 定期删除的这个期难以确定,执行的太频繁,对CPU不友好,不频繁,和惰性删除没区别。
  • 抽取key时循环时间难以确定

所以,Redis选择惰性删除+定期删除结合起来

内存淘汰策略

当内存中的key过多,达到一个配置的内存阈值时,就会淘汰一些key
内存淘汰策略分为两种

一:不淘汰

noeviction:超过阈值时Redis直接停止服务报错,不淘汰key

二:淘汰

淘汰又分为两种
**PS:先来几个英文缩写:
l:least
r:rencently
f:frequently
u:use

ok,英语小课堂开课
least表示一个否定的意思,意味“最少…”

(一)在设置了过期时间的数据里淘汰

ttl:按照过期时间淘汰马上要过期的key
random:随机
lru:最近最少使用
lfu:最少频率使用(最不常用)

(二)在所有数据范围淘汰

random:随机
lru:最近最少使用
lfu:最少频率使用(最不常用)

关于过期删除策略和内存淘汰策略的思考

Redis操作的是内存,内存满了会爆,为了防爆,出现这俩策略
过期删除是先锋,通过惰性删除++定期删除删除key。如果实在删不过来,内存淘汰来压轴。
反正就是防止内存爆掉。

说人话面试题

Redis过期删除策略说一说

Redis采用的过期策略是惰性删除+定期删除。
先分开来讲,惰性删除是指不主动删除key,在用到这个key的时候看这个key是否过期,过期则删除。定期删除是指每隔一段时间,从Redis数据库里取20个key进行过期时间检查,根据过期时间判断是否删除。如果过期的key超过1/4,则重新取20个key,循环往复直到过期的key小于1/4或者循环时间到达设置的循环时间上限。
那么这两种删除策略各有优缺点,惰性删除CPU友好,内存不友好,可能会有无意义的数据占用空间。而定期删除不好确定检查频率,如果检查太频繁,对CPU不友好,检查不频繁,又和惰性删除差不多。
所以Redis选择了惰性删除+定期删除。

Redis内存淘汰策略有哪些?

首先是不淘汰,noeviction,当占用的内存到达阈值时,redis直接停止服务报错
淘汰策略又分为两种,在设置了过期时间的key里淘汰,和在所有数据里淘汰
这两种都有三种策略:random,随机,lru,从最近最少使用的数据里淘汰,lfu,从使用频率最少的数据里淘汰。
设置过期时间的策略多一种ttl,淘汰马上要过期的key。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值