在Redis中删除过期key有两种策略:
-
主动删除:Redis会在每次访问key时检查其是否过期,如果过期则立即删除。这种方式会稍微增加访问key的时间,但能确保过期key及时删除。
-
惰性删除: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并释放内存空间。