redis过期策略
Posted Kobelieve
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis过期策略相关的知识,希望对你有一定的参考价值。
- redis过期策略
- 定期删除
- 缺省情况下,redis每隔100ms就随机选取一些设置了过期时间的key来检查,看其是否过期,如果过期了就删除。那么这里就会存在一个问题,假如redis中存在这100万个设置了超时时间的key,那么redis如果每隔这么短的时间去就检查,肯定会崩掉,所以redis才会定期抽选一些来检查。
- 惰性删除
- 如果定期没有抽取到已经过期的key,那么在取出这个key的时候,redis会检查,如果超时了,也会将其删除
- 内存淘汰机制
- 如果上面两种情况都同时没命中,那么大量过期key堆积在内存中,就导致redis内存块耗尽。所以这里就会走内存淘汰机制
- noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,很少用
- allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key,最常用
- llkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,很少用
- volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key
- volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key
- volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除
- 如果上面两种情况都同时没命中,那么大量过期key堆积在内存中,就导致redis内存块耗尽。所以这里就会走内存淘汰机制
- 定期删除
以上是关于redis过期策略的主要内容,如果未能解决你的问题,请参考以下文章