【355、Redis 在内存不足时,淘汰机制是怎样的?】

44 阅读1分钟

当Redis的内存达到预设的最大值时,会触发内存淘汰机制,即Redis会按照一定的策略,从已有的数据集中选出一些需要被删除的键,以释放一定的内存空间。

Redis内存淘汰机制采用的是“惰性删除”策略,即在需要内存空间时才进行淘汰操作。Redis提供了以下几种内存淘汰策略:

  1. 随机删除:从数据集中随机选择一个键进行删除。
  2. 最少使用(LRU)删除:从数据集中选择最近最少使用的键进行删除。
  3. 最少使用(LFU)删除:从数据集中选择最近最少频繁使用的键进行删除。
  4. TTL过期删除:Redis允许给每个键设置一个过期时间(TTL),到期后键会自动被删除。

可以通过配置文件中的maxmemory-policy参数来设置内存淘汰策略。例如,maxmemory-policy allkeys-lru 表示使用LRU策略删除所有键,而maxmemory-policy volatile-ttl 表示仅对设置了过期时间的键使用TTL过期删除策略。

需要注意的是,Redis在执行淘汰操作时,会先判断是否有键的过期时间已经到了,如果有则直接删除这些键。如果仍需要释放更多内存,则会按照设置的淘汰策略,从剩余的键中选择需要删除的键,直到达到需要释放的内存空间为止。

总之,Redis内存淘汰机制可以通过设置不同的淘汰策略,在保证Redis服务正常运行的前提下,尽可能地释放内存空间。