Redis 有以下几种数据淘汰策略:
- noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)。
- allkeys-lru:从所有 key 中使用 LRU 算法进行淘汰(LRU 算法:即最近最少使用算法)。
- volatile-lru:从设置了过期时间的 key 中使用 LRU 算法进行淘汰。
- allkeys-random:从所有 key 中随机淘汰数据。
- volatile-random:从设置了过期时间的 key 中随机淘汰。
- volatile-ttl:在设置了过期时间的 key 中,淘汰过期时间剩余最短的。当使用
volatile-lru、volatile-random、volatile-ttl 这三种策略时,如果没有 key 可以被淘汰,则和
noeviction 一样返回错误。
Redis 还支持内存最大使用量,当内存使用量超出时,会实行数据淘汰策略。在运行过程中也可以通过命令动态设置淘汰策略,并通过 INFO
命令监控缓存的 miss 和 hit,来进行调优。