redis的删除策略

redis有两种删除策略,这两种删除策略会同时使用。

1、定期删除。redis会将所有设置了过期时间的key都放到一个字典中,然后每隔100ms去随机抽取20个key,删除其中已过期的key,如果其中已过期的key占比1/4以上,则再立即随机抽取20个key,否则等待下次循环。

2、惰性删除。当访问key的时候,检查key是否过期,如果过期就删除。

 

redis的驱逐策略

当内存使用量达到设置的maxmemory时,如何驱逐key

1、volatile-lru:在设置了过期时间的key集合中执行lru

2、allkeys-lru:在所有的key中执行lru

lru是least recently used,最近最少使用。lfu是least frequency used,频次最少使用。lru的权重是访问时间,lfu的权重是访问频率。

 

3、volatile-lfu:在设置了过期时间的key集合中执行lfu

4、allkeys-lfu:在所有的key中执行lfu

 

5、volatile-random:在设置里过期时间的key集合中随机驱逐一个

6、allkeys-random:在所有的key中随机驱逐一个

 

7、volatile-ttl:驱逐最近到期的一个key

8、noeviction:不驱逐。写命令直接返回error