Redis的内存淘汰机制
Redis的内存淘汰机制和过期策略是2个完全不同的机制,
过期策略指的是使用那种策略来删除过期键,Redis的内存淘汰机制是指:当Redis的运行内存已经超过设置的最大运行内存时,采用什么策略来删除符合条件的键值对,以此来保障redis的高效运行
Redis的最大运行内存
只有在Redis的运行内存达到了某个阈值时,才会触发相应的内存淘汰机制,这个阈值就是我们设置的最大运行内存,可以在redis的配置文件中配置,此项为maxmemory。
当此值为0时,表示不限制最大使用内存
- 32位服务器,默认最大使用内存为3GB
- 64位服务器,默认最大使用内存为0,表示没有内存大小限制。
内存淘汰策略
- noeviction:不淘汰任何数据,当内存使用达到了最大内存时,新增操作会报错,Redis的默认内存策略。
- allkeys-lru:淘汰所有key中,最久未被使用的键值。
- volatile-lru:淘汰设置了过期时间的key中,最久未被使用的键值。
- allkeys-random:随机淘汰任意键值
- volatile-random:随机淘汰设置了过期时间的键值
- allkeys-lfu:淘汰所有key中,最少被使用的键值
- volatile-lfu:淘汰设置了过期时间的key中,最少被使用的键值
- volatile-ttl:淘汰设置了过期时间的key中,最先过期的键值。