
# Redis实例的数据逐出策略是什么？
逐出指将数据从缓存中删除，以腾出更多的存储空间容纳新的缓存数据，详情请参见官网[逐出策略](https://redis.io/topics/lru-cache?spm=a2c4g.11186623.2.2.7a465a76HeE7QM)。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"字段集的所有键中驱逐最不常用的键。
![](https://support.huaweicloud.com/dcs_faq/public_sys-resources/note_3.0-zh-cn.png)
- 当没有键满足回收前提条件时，数据逐出策略volatile-lru、volatile-random、volatile-ttl与noeviction策略相同，具体见上文noeviction介绍。
- 2020年7月之前创建的Redis实例，逐出策略默认为noeviction。2020年7月及之后创建的实例，逐出策略默认为volatile-lru。
 
 #### 查看或修改Redis实例使用的逐出策略
Redis实例支持通过修改maxmemory-policy参数配置，查看及修改实例的数据逐出的策略。修改参数配置的方式请参见[修改DCS实例配置参数](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312024.html)。
![](https://support.huaweicloud.com/dcs_faq/zh-cn_image_0000001790356802.png "点击放大")
