redis时间过期策略

redis的时间过期策略为 `定期删除 + 惰性删除`。

定期删除

定期删除是指Redis默认每隔 100ms 就 随机抽取 一些设置了过期时间的key,检测这些key是否过期,如果过期了就将其删除;

正因为定期删除只是随机抽取部分key来检测,这样的话就会出现大量已经过期的key并没有被删除,这就是为什么有时候大量的key明明已经过了失效时间,但是redis的内存还是被大量占用的原因 ,为了解决这个问题,Redis又引入了“惰性删除策略”。

惰性删除

惰性删除不是去主动删除,而是在你要获取某个key 的时候,redis会先去检测一下这个key是否已经过期,如果没有过期则返回给你,如果已经过期了,那么redis会删除这个key,不会返回。

"定期删除+惰性删除"就能保证过期的key最终一定会被删掉 ,但是只能保证最终一定会被删除,要是定期删除遗漏大量过期key,我们在很长的一段时间内也没有再访问这些key,那么这些过期key就一直会存在于内存中,会一直占着宝贵的内存资源,由于存在这样的问题,所以redis引入了“内存淘汰策略”来解决。

posted @ 2023-01-16 23:19  HexThinking  阅读(37)  评论(0编辑  收藏  举报