文档首页/ 分布式缓存服务 DCS/ 常见问题/ 实例特性/ Redis实例的数据逐出策略是什么?
更新时间:2023-12-27 GMT+08:00

Redis实例的数据逐出策略是什么?

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

Redis实例支持的逐出策略

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

  • noeviction:在这种策略下,如果缓存达到了配置的上限,实例将不再处理客户端任何增加缓存数据的请求,比如写命令,实例直接返回错误给客户端。缓存达到上限后,实例只处理删除和少数几个例外请求。
  • allkeys-lru:根据LRU(Least recently used,最近最少使用)算法尝试回收最少使用的键,使得新添加的数据有空间存放。
  • volatile-lru:根据LRU(Least recently used,最近最少使用)算法尝试回收最少使用的键,但仅限于具有“expire”字段集的键,使得新添加的数据有空间存放。
  • allkeys-random:回收随机的键使得新添加的数据有空间存放。
  • volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于具有“expire”字段集的键。
  • volatile-ttl:回收具有“expire”字段集中的键,且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。
  • allkeys-lfu:从所有键中驱逐最不常用的键。
  • volatile-lfu:从具有“expire”字段集的所有键中驱逐最不常用的键。
  • 当没有键满足回收前提条件时,数据逐出策略volatile-lru、volatile-random、volatile-ttl与noeviction策略相同,具体见上文noeviction介绍。
  • 2020年7月之前创建的Redis实例,逐出策略默认为noeviction。2020年7月及之后创建的实例,逐出策略默认为volatile-lru。

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

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