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