设置redis内存淘汰策略
在redis.conf
设置maxmemory-policy
参数,可选参数如下:
- volatile-lru -> remove the key with an expire set using an LRU algorithm。删除最近最少使用到的具有过期时间的数据
- allkeys-lru -> remove any key according to the LRU algorithm。删除最近最少使用到的数据
- volatile-lfu -> Evict using approximated LFU, only keys with an expire set.从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰
- allkeys-lfu -> Evict any key using approximated LFU.当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的key
- volatile-random -> remove a random key with an expire set。随机删除具有过期时间的数据
- allkeys-random -> remove a random key, any key。随机删除
- volatile-ttl -> remove the key with the nearest expire time (minor TTL)。删除具有最近过期时间的密钥
- noeviction -> don’t expire at all, just return an error on write operations。默认的策略,完全不过期,只是在写操作上报错
从所有key中去选择:
- allkeys-lru -> 删除最近最少使用到的数据
- allkeys-random -> 随机删除
从已经设置了过期时间的key中去选择:
- volatile-random -> 随机删除具有过期时间的数据
- volatile-lru -> 删除最近最少使用到的具有过期时间的数据
- volatile-ttl -> 删除具有最近过期时间的密钥
4.0版本后增加以下两种:
- volatile-lfu -> 从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰
- allkeys-lfu -> 当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的key