定期删除
每隔一段时间(默认100ms)就随机抽取一些设置了过期时间内的key,检查其是否过期,如果有过期就删除。之所以这么做,是为了通过限制删除操作的执行时间内和频率来减少对cpu的影响,不然每隔100ms就要遍历所有设置过期时间的key,会导致cpu负载太大。
惰性删除
不主动删除过期key,每次从数据库访问过期key时,都检测key是否过期,如果过期就删除该key。惰性删除有一个问题,如果这个key已经过期了,但是一直没有被访问,就会一直保存再数据库中。
以上原理告诉我们,Redis过期删除是不精确的,惰性删除更是在某些场景下不可用,key过期无法保证立刻删除。
Redis通过定期删除和惰性删除策略管理过期key。定期删除限制了删除操作的频率和执行时间,以减少对CPU的影响,而惰性删除则在访问key时检查是否过期,可能导致过期key不立即删除。这种机制意味着Redis的过期删除并不精确,且在某些情况下不保证即时性。
2166

被折叠的 条评论
为什么被折叠?



