一天一个知识点:Redis的键淘汰策略

55 阅读1分钟

hello 我是小零,和你一样的开发者。

截至目前为止:Redis的键淘汰策略有八种,也可以分为三个部分

  1. 第一部分:设置了过期时间的键进行处理,没有设置就不处理
    • volatile-lru: 选取最近最少使用的键进行删除
    • volatile-random: 随机选取一部分进行删除
    • volatile-ttl: 选取快要过期的键进行删除,ttl越小越容易被删除
    • volatile-lfu: 选取最少使用的进行删除
  2. 第二部分:从全部的key中进行处理
    • allkeys-lru: 选取最近最少使用的进行删除
    • allkeys-random: 随机选取一部分进行删除
    • allkeys-lfu: 选取最少使用的进行删除
  3. no-enviction 不进行删除,如果内存满了,就不允许继续写入(默认策略)

设置建议:如果在redis中,有一部分数据访问频率较高,有一部分访问频率较低,或者无法预测数据的访问频率的时候建议使用allkeys-lru。如果开发者需要通过设置过期时间来处理数据,可以选用volatile-ttl。如果数据的访问频率大致相等,可以选用allkeys-random。如果希望一些数据被长期保存,一些数据要被淘汰,可以选用volatile-lru或者volatile-lfu或者volatile-random。利用合适的淘汰策略可以减少设置过期时间之这一部分的内存开销,高效的利用内存。

在redis.conf配置文件中,参数maxmemory-policy用来配置淘汰策略。