Redis 的 GETEXPIRE
命令用于获取 key 的过期时间。要防止缓存雪崩,可以采取以下策略:
import time
import random
key = "your_key"
random_expire_time = random.uniform(60, 300) # 设置随机的过期时间在 60 到 300 秒之间
redis.setex(key, random_expire_time, value)
import time
key = "your_key"
max_expire_time = 300 # 设置过期时间的上限为 300 秒
redis.setex(key, max_expire_time, value)
import redis
import time
def set_key_with_lock(key, value, expire_time):
lock_key = f"lock:{key}"
lock_acquired = redis.set(lock_key, "locked", ex=10, nx=True)
if lock_acquired:
try:
redis.setex(key, expire_time, value)
finally:
redis.delete(lock_key)
else:
time.sleep(0.1) # 等待一段时间后重试
使用缓存预热:在系统启动时,预先将一些热点数据加载到缓存中,以减轻缓存雪崩的影响。
监控和告警:对缓存的命中率、过期时间等进行监控,并在出现异常时及时发出告警,以便快速定位和解决问题。
通过采取这些策略,可以有效地降低缓存雪崩的风险。