redis如何删除过期key策略

2024-04-18

Redis中删除过期key有两种策略:

  1. 主动删除:Redis会在每次访问key时检查其是否过期,如果过期则立即删除。这种方式会稍微增加访问key的时间,但能确保过期key及时删除。

  2. 惰性删除:Redis不会主动检查key是否过期,而是在key被访问时检查其是否过期,如果过期则删除。这种方式不会增加访问key的时间,但可能会造成过期key在一段时间内仍然存在于内存中。

默认情况下,Redis使用惰性删除策略。可以通过配置参数maxmemory-policy来设置删除策略,常见的删除策略有:

  • volatile-lru:在设置了过期时间的key中,选择最近最少使用的key进行删除。
  • volatile-ttl:在设置了过期时间的key中,选择过期时间最早的key进行删除。
  • volatile-random:在设置了过期时间的key中,随机选择一个key进行删除。
  • allkeys-lru:在所有key中选择最近最少使用的key进行删除。
  • allkeys-random:在所有key中随机选择一个key进行删除。
  • noeviction:不删除任何key,Redis会返回错误信息告知客户端内存不足。

通过合理配置删除策略,可以有效管理过期key并释放内存空间。