Redis提供了多种内存淘汰算法,用于在内存使用达到上限时决定哪些数据应该被移除以便为新数据腾出空间。以下是Redis支持的内存淘汰算法:
noeviction:不淘汰任何key,当内存不足以容纳新写入数据时,新的写入操作会报错。这是Redis的默认内存淘汰策略。
allkeys-lru:从所有的key中,根据最近最少使用(Least Recently Used, LRU)算法来淘汰数据。
allkeys-random:从所有key中随机淘汰数据。
volatile-lru:仅从设置了过期时间的key中,根据LRU算法来淘汰数据。
volatile-random:从设置了过期时间的key中随机淘汰数据。
volatile-ttl:从设置了过期时间的key中,根据剩余的TTL(Time To Live)值来淘汰数据,即越早过期的key越先被淘汰。
volatile-lfu:从设置了过期时间的key中,根据最不经常使用(Least Frequently Used, LFU)算法来淘汰数据。这是Redis 4.0版本后新增的策略。
allkeys-lfu:从所有的key中,根据LFU算法来淘汰数据。这也是Redis 4.0版本后新增的策略。
这些策略可以根据不同的应用场景和数据特性来选择,以确保内存资源的有效利用和系统的稳定运行。