更新时间:2024-07-29 GMT+08:00

Redis默认的数据逐出策略是什么?

逐出指将数据从缓存中删除,以腾出更多的存储空间容纳新的缓存数据,详情请参见官网逐出策略。Redis实例支持在配置运行参数中查看或修改Redis实例使用的逐出策略

Redis实例支持的逐出策略

在达到内存上限(maxmemory)时Redis支持选择以下8种数据逐出策略:

  • noeviction:在这种策略下,如果缓存达到了配置的上限,实例将不再处理客户端任何增加缓存数据的请求,比如写命令,实例直接返回错误给客户端。缓存达到上限后,实例只处理删除和少数几个例外请求。
  • allkeys-lru:根据LRU(Least recently used,最近最少使用)算法尝试回收最少使用的键,使得新添加的数据有空间存放。
  • volatile-lru:根据LRU(Least recently used,最近最少使用)算法尝试回收最少使用的键,但仅限于在过期集合的键,使得新添加的数据有空间存放。
  • allkeys-random:回收随机的键使得新添加的数据有空间存放。
  • volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
  • volatile-ttl:回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。
  • allkeys-lfu:从所有键中驱逐最不常用的键。
  • volatile-lfu:从具有“expire”字段集的所有键中驱逐最不常用的键。

当没有键满足回收前提条件时,数据逐出策略volatile-lru、volatile-random、volatile-ttl与noeviction策略相同,具体见上文noeviction介绍。

查看或修改Redis实例使用的逐出策略

Redis实例支持通过修改maxmemory-policy参数配置,查看及修改实例的数据逐出的策略。