redis内存淘汰和持久化的关系?

根据redis内存淘汰策略
如果一个键被淘汰了
这个键值对会在硬盘的持久化文件中吗?
还是在持久化文件中也会被删除?

BTW:如果设置了volatile-lru或者 volatile-random或者 volatile-ttl
如果设置了过期时间的kv对都被清除了,内存还是超过maxmemory
redis是报错还是清除未设置过期时间的kv对?

阅读 2.9k
1 个回答
Redis 提供了多种缓存淘汰策略,含义在注释中说的很清楚。
LRU:表示最近最少使用; LFU:表示最不常用的。

区别在于:LFU 是一定时间内访问最少的,比如 10 分钟内访问最少的,而 LRU 则是指服务启动后,访问量最少的内容。 下面按顺序说明下淘汰策略:

volatile-lru 筛选出设置了有效期的,最近最少使用的 key;
allkeys-lru 所有 key 中,筛选出最近最少使用的 key;
volatile-lfu 筛选出设置了有效期的,最不常用的 key;
allkeys-lfu 所有 key 中,筛选出最不常用的 key ;
valatile-random 随机筛选出设置了有效期的 key;
allkeys-random 所有 key 中,随机筛选出 key进行删除;
volatile-ttl 筛选出所有设置有效期的 key 中,有效期最短的 key;
noeviction 拒绝策略,当内存满了之后,服务不做任何处理,直接返回一个错误 Redis 默认是拒绝策略,可根据实际情况做出设置。(默认)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进