前言
上周项目中出现了一个关于redis访问速度突然慢了一波,之后又恢复正常的情况,对于该问题衍生出了关于redis设置过期时间问题,于是在这里进行相关知识的总结,同时也分享给需要的伙伴,共同成长!
这是一篇从redis设置过期时间衍生出的设置过期时间之后redis该如何对相应的key做处理以此来保证redis内存充足可用等相关的一些列问题。
内容涉及到redis的定期删除和惰性删除还有内存淘汰机制(这里是8种,因为redis4.0版本后新加入了2种),还包括了相应的场景问题
下面是小编是以图的形式总结了以上所说的全部知识点,图的形式能让我更有分层概念及对该知识点更能够宏观的把控。
这里对redis主动过期策略方式做补充:
redis内部维护了一个定时任务,默认为每隔100ms就会从全局过期的哈希表中随机取出20个key,然后删除其中过期的key,如果过期key的比例超过了20%,则继续重复此过程,直到过期key的比例下降到25%以下,或者是这次任务的执行耗时超过了25毫秒,才会退出循环。
注意:这个定时任务,是在redis主线程中才执行的