Redis 的缓存失效策略通常是通过设置过期时间来实现的。以下是一些常见的 Redis 缓存失效策略:
-
定时过期(TTL): 使用
EXPIRE命令或者相关的SET命令参数,设置键的过期时间。一旦过了指定的时间,键就会被自动删除。SET key value EX 3600 # 设置键为 value,过期时间为 3600 秒 -
基于访问的过期(LRU算法): Redis 使用 Least Recently Used (LRU) 算法来管理内存中的数据。如果启用了 LRU 算法,并且键是过期的,当访问该键时,Redis 会检查它的过期时间并决定是否删除。
-
懒汉式过期(Lazy Expire): 在访问时检查键的过期时间,如果过期则删除。这是一种比较灵活的策略,但可能会导致在键过期后仍然被访问一段时间。
-
定期删除过期键: Redis 会定期(每秒执行一次)随机检查一些设置了过期时间的键,并删除其中过期的键。这是一种自动清理机制,通过配置
hz(每秒执行的命令数)来控制检查的频率。 -
发布订阅机制(Pub/Sub): 当某个键过期时,Redis 可以发布一个消息,订阅者可以收到这个消息并进行相应的处理。这需要使用 Redis 的发布订阅功能。
# 发布过期事件
EXPIREAT key timestamp
如果某些数据很少被访问,可以采用懒汉式过期;如果对缓存的即时性要求较高,可以使用定时过期。