九、redis的删除机制

redis是采用定期删除+惰性删除策略

一)redis有三种不同的删除机制

redis数据库键的过期时间都保存在过期字典中,根据系统时间和存活时间判断是否过期。

  1,定时删除:实现方式,创建定时器

  2,惰性删除:每次获取键时,检查是否过期

  3,定期删除:每隔一段时间,对数据库进行一次检查,删除过期键,由算法决定删除多少过期键和检查多少数据库

二) 优缺点

  1,定时删除,对内存友好,但是对cpu很不友好(因为单线程)

定时删除,用一个定时器来负责监视key,当这个key过期就自动删除,虽然内存及时释放,但是十分消耗CPU资源,在大并发请求下CPU要尽可能的把时间都用在处理请求,而不是删除key,因此没有采用这一策略

  2,定期删除 ---- 如果删除太频繁,将退化为定时删除,如果删除次数太少,将退化为惰性删除。

redis默认每100ms检查是否有过期的key,有过期的key则删除。需要说明的是redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查。因此,如果只采用定期策略,会导致很多key到时间没有删除,也就是使用定时删除会导致删除不完全,于是引入了惰性删除

  3,惰性删除

某个键值过期后,此键值不会马上被删除,而是等到下次被使用的时候,才会被检查到过期,此时才能得到删除。所以惰性删除的缺点很明显:浪费内存

 三)redis的内存淘汰机制

采用定期删除+惰性删除就没问题了呢?

不是的如果定期删除没有删除key,然后你也没有及时去请求这个key,也就是说惰性删除也没有生效。这样redis的内存会越来越高,那么就应该采用内存淘汰机制。

内存淘汰机制就能保证在redis内存占用过高的时候,去进行内存淘汰,也就是删除一部分key,保证redis的内存占用率不会过高

redis的淘汰策略有8种,不详细列举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值