Redis——过期键删除策略

当Redis服务器中的数据库键超过过期时间,删除策略主要为三种:

  1. 定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作。
  2. 惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,过期的话,删除该键;如果没有过期,就返回该键。
  3. 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。

定时删除

优劣:

定时删除策略对内存是最友好的,通过使用定时器,定时删除策略可以保证过期键会尽可能快地删除,并释放过期键所占用的内存。但是,它对CPU时间是最不友好的。在过期键比较多的情况下,删除过期键这一行为可能会占用相当一部分CPU时间,在内存不紧张但CPU紧张的情况下,将CPU时间用在删除和当前任务无关的过期键上,无疑会对服务器的响应时间和吞吐量造成影响。

惰性删除

优劣:

惰性删除策略对CPU时间来说是最友好的。程序只会取出键时才对键进行过期检查,这可以保证删除过期键的操作只会在非做不可的情况下进行,并且删除的目标仅限于当前处理的键,这个策略不会在删除其他无关的过期键上花费任何CPU时间。缺点是对内存最不友好。如果一个键已经过期,而这个键又仍然保留在数据库中,那么只要这个过期不删除,它所占用的内存就不会被释放。

定期删除

定期删除想要综合定时删除和惰性删除的优劣,是一种整合和折中。实施办法为:

  • 定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响。
  • 通过定期删除过期键,定期删除策略有效地减少了因为过期键而带来的内存浪费。

定期删除的难点在于确定删除操作执行的时长和频率。

  • 删除操作执行的太频繁,或者执行时间太长,定期删除策略就会退化成定时删除策略,以至于将CPU时间过多地消耗在删除过期键上面。
  • 删除操作执行的太少,或者执行时间太短,定期删除策略又会和惰性删除策略一样,出现内存浪费的情况。

合理地设置删除操作的执行时长和执行频率是定期删除策略的重点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值