Redis使用的过期删除策略是什么?

目录

一、什么是惰性删除策略?

二、什么是定期删除策略?

Redis采用了惰性删除和定期删除两种过期数据删除策略。

Redis可以对key设置过期时间,所以需要有相应的机制将已过期的键值对删除,而这个工作的就是过期键值删除策略。

一、什么是惰性删除策略?

惰性删除是指在访问一个key时,会同时检查该key是否已过期,如果过期的话,就立即进行删除。这种策略的优点是可以保证获取到的一定是未过期的数据,但可能会存在一些过期数据一直未被删除的情况。

具体流程如下:

1. 当客户端发起对某个key的访问请求时,Redis会首先检查该key是否存在。
2. 如果该key存在,Redis进一步判断该key是否已过期。
3. 如果该key已过期,那么Redis会在此时删除这个key,并进行相应的内存释放。
4. 如果该key未过期,那么Redis就直接返回该key的值给客户端。

这个过程是被动的,也就是说,只有在实际需要访问某个key的时候,Redis才会去检查这个key是否已过期,如果过期则进行删除。这种方式的优点是可以最大程度地节省系统资源,但同时也可能会存在一些过期数据一直未被删除的情况。

惰性删除策略的优点

1. 节约CPU性能:惰性删除策略只在必要时才进行检查和删除操作,不会在删除其它无关的过期键上花费过多的CPU时间。
2. 及时发现必须删除的key:只有在实际需要访问某个key的时候,Redis才会去检查这个key是否已过期,能够及时发现必须删除的key。

惰性删除策略的缺点

1. 内存压力大:由于惰性删除策略只会在获取键时才对键进行过期检查,因此可能出现长期占用内存的数据,对内存的压力较大。
2. 出现过期数据未被删除的情况:惰性删除策略可能会存在一些过期数据一直未被删除的情况。

二、什么是定期删除策略?

定期删除则是在设置某个key的过期时间的同时,为该key创建一个定时器,到了过期时间就会立即删除它。这种方式可以保证无效的数据及时得到释放,避免无限制地占用内存。 

具体的流程如下:

1. Redis会每隔一段时间执行一次删除过期键的操作。这个过程通过限制删除操作的数量和频率,来尽可能地减少对CPU和内存的压力。
2. 在执行删除操作时,Redis会随机抽取一部分keys,例如20个,然后检查这些keys是否已经过期。
3. 如果发现有过期的keys,Redis会删除它们,并重新安排下一次的删除任务。
4. Redis会通过比例来判断是否需要继续删除过期的keys。例如,如果本轮检查的已过期keys的数量超过了总抽取数量的四分之一(25%),那么Redis会继续进行下一轮的删除操作;否则,Redis会暂停删除操作,等待下一轮再进行检查。

定期删除策略的优点:
1. 保证Redis占用的内存不会无限增长:定期删除策略可以定期清理过期数据,从而避免长期占用内存的冷数据持续存在,使得Redis占用的内存得到有效控制。
2. 对CPU友好:由于删除操作是定时进行的,所以对CPU的时间占用相对比较少。

定期删除策略的缺点:
1. 对内存的压力较大:虽然定期删除策略会定期清理过期数据,但在清理过程中可能会对CPU和内存造成一定的压力。
2. 时效性较差:如果定期删除的时间设置得过长,可能会导致部分已经过期的数据仍然存在一段时间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值