【Redis】Redis 的内存回收策略有哪些?

Redis提供了以下几种主要的内存回收策略:
1.LRU回收:最少使用策略
根据key的最近使用时间,移除最久未使用的key。

2.LFU回收:最不经常使用策略
根据key的访问频率,移除最少访问的key。

3.随机回收
直接随机从内存中回收key。

4.TLL回收
根据key的过期时间存储,回收已过期key。

5.诊断回收
人为触发,移除指定的key。

6.MIGRATION回收
在执行KEYS command及 bilateral key relocation 时触发的回收。

7.淘汰策略转换
在内存回收阈值到达时,临时切换回收策略。

使用这些回收策略的方式:

  1. 设置内存大小上限:
maxmemory <bytes>
  1. 设置回收策略:
maxmemory-policy <policy> 
# policy 可以是 lru、lfi 等
  1. 当内存超出上限时,会按策略回收key。

不同策略的优缺点:

  • LRU : 最简单但会丢失活跃 key
  • LFU : 考虑频率但算法复杂
  • 随机:公平但敏感 key 可能被移除
  • TLL: 移除已过期的key
  • 诊断:针对性地移除key

综上, Redis提供了多种内存回收策略, 在设置合理的内存上限的基础上, 可以动态切换回收策略,更好地处理内存溢出。