Redis是如何处理过期的数据的?

发布时间:2024-03-15 13:21:18
 

我们可以通过expire来设置redis的过期时间

那么通常情况下我们有三种方式来进行处理过期数据:

定时删除,每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。

惰性删除,惰性删除其实就是当访问数据时判断,如果数据已经过期的话直接删除并返回null回去,它可以只占用很少的一部分系统资源来处理但是这种策略的也有一定的缺陷在面对冷数据会占用空间删除不及时,造成空间浪费,只能靠redis数据淘汰策略来进行处理。

另一种是随机删除,定期删除是每隔一段时间随机取出设置了过期时间的一定数量的key进行检查,然后删除其中过期的key。如果超过了百分之25%的数据过期了,就会再次执行。它通过限制删除操作的时长和频率来减少对CPU和内存空间占用的影响,但是它的删除效果并没有定时删除的效果好,同时也没有比惰性删除所占用的系统资源低。

而我们的redis则采用的是惰性删除与随机删除。


 
上一篇 Redis是如何解决Hash冲突的?
下一篇 MySQL里有2000w数据Redis中只存20w的数据,如何保证 redis 中的数据都是热点数据?

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题