当我们对Redis设置了maxmemory,那么当Redis的内存达到了这个阈值后,就可以对内存中的内容进行淘汰,直到Redis的内存控制在maxmemory内。
一、淘汰策略
ttl:设置了过期时间的key中,剩余时间更少的优先淘汰。
lru:最近最少使用的key,优先被淘汰。
lfu:最近访问频率最少的key,优先被淘汰。
random:随机淘汰内存中内容。
noeviction:无法再写入Redis,不会处理内存中的内容,是默认的淘汰策略。
二、淘汰范围
allkeys-xxx:allkeys开头的是对Redis中的所有key都在淘汰范围内。
volatile-xxx:volatile开头的是对Redis中的设置了超时时间的key列入淘汰范围。
三、设置淘汰策略
Redis的配置文件中maxmemory-policy,就是我们说的,达到最大内存后的淘汰策略。
所以以上的淘汰策略+淘汰范围结合起来,Redis中有以下几类淘汰策略,可以进行设置。
序号 | 淘汰策略 | 意义 |
---|---|---|
1 | noeviction | 无法继续写入 |
2 | allkeys-lru | 所有key中,最近最少访问的 |
3 | allkeys-lfu | 所有key中,最近访问频率最少的 |
4 | allkeys-random | 所有key中,随机选择 |
5 | volatile-ttl | 有超时时间的,越早到期的 |
6 | volatile-lru | 有超时时间的,最近最少访问的 |
7 | volatile-lfu | 有超时时间的,最近访问频率最少的 |
8 | volatile-random | 有超时时间的,随机选择 |
四、使用淘汰策略
如果我们的Redis只是作为缓存使用,那么可以使用allkeys开头的淘汰策略。
如果我们的Redis还有其他用途,做了持久化,那么我们就要使用volatile开头的淘汰策略。