Redis有哪些 数据淘汰策略

Redis在内存不足时,采用不同的淘汰策略处理数据,如LRU、LFU和基于TTL的选择。推荐使用allkeys-lru策略保留最近最常访问的数据,对于有冷热数据区分的业务适用。对于有特殊需求的场景,如置顶或短时高频访问,可以选择volatile-lru或LFU策略。

数据的淘汰策略:当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。

 Redis支持8种不同策略来选择要删除的key:

  • noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。
  • volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰
  • allkeys-random:对全体key ,随机进行淘汰。
  • volatile-random:对设置了TTL的key ,随机进行淘汰。
  • allkeys-lru: 对全体key,基于LRU算法进行淘汰
  • volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰
  • allkeys-lfu: 对全体key,基于LFU算法进行淘汰
  • volatile-lfu: 对设置了TTL的key,基于LFU算法进行淘汰 

数据淘汰策略-使用规范 

  1. 优先使用 allkeys-lru 策略。充分利用 LRU 算法的优势,把最近最常访问的数据留在缓存中。如果业务有明显的冷热数据区分,建议使用。
  2. 如果业务中数据访问频率差别不大,没有明显冷热数据区分,建议使用 allkeys-random,随机选择淘汰。
  3. 如果业务中有置顶的需求,可以使用 volatile-lru 策略,同时置顶数据不设置过期时间,这些数据就一直不被删除,会淘汰其他设置过期时间的数据。
  4. 如果业务中有短时高频访问的数据,可以使用 allkeys-lfu 或 volatile-lfu 策略。 

### Redis 数据淘汰策略及其适用场景 Redis 提供了多种数据淘汰策略,这些策略主要用于管理内存资源并防止因内存不足而导致的服务中断。以下是常见的 Redis 数据淘汰策略以及它们的适用场景: #### 1. **Volatile-LRU (Least Recently Used)** 此策略会在设置了过期时间的数据集中选择最近最少使用的键进行淘汰[^4]。适用于那些希望优先保留经常访问的缓存数据的情况。 #### 2. **Volatile-TTL (Time To Live)** 这种策略会选择具有较短剩余生存时间(TTL)的键进行淘汰[^4]。适合于清理即将到期的数据,从而减少不必要的内存占用。 #### 3. **Volatile-Random** 随机从设置了过期时间的数据集中选择一个键进行淘汰[^4]。通常用于不需要特别关注数据使用频率或 TTL 的简单场景。 #### 4. **AllKeys-LRU** 无论是否有过期时间设置,都会在整个键空间中选择最近最少使用的键进行淘汰[^4]。这是最常用的一种策略,尤其在通用缓存场景下表现良好。 #### 5. **AllKeys-Random** 从整个键空间中随机选择一个键进行淘汰。适用于对数据一致性要求较低的应用程序。 #### 6. **No-Eviction** 禁用任何类型的驱逐行为。如果内存不足以容纳新写入的数据,则新写入操作将会失败并抛出错误。尽管不常见,但在某些严格控制内存使用的环境中可能会被考虑。 --- ### 使用场景总结 | 淘汰策略 | 描述 | 适用场景 | |------------------|--------------------------------------------------------------------------------------|---------------------------------------------| | Volatile-LRU | 删除带有过期标志且最近较少使用的项目 | 缓存系统 | | Volatile-TTL | 移除接近其有效期限结束的带有过期标记的对象 | 动态内容加载 | | Volatile-Random | 随机删除一些设定有失效日期的目标 | 不关心具体哪些项会被清除的小型应用 | | AllKeys-LRU | 清理掉整体中最久未被触及的内容 | 大规模分布式缓存 | | AllKeys-Random | 完全随机地选取目标予以释放 | 特殊需求下的实验性质测试 | | No-Eviction | 不执行自动移除动作 | 极端情况下保护重要数据 | ```python # 设置 Redis 淘汰策略示例 config set maxmemory-policy allkeys-lru ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值