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) # 等待一段時間后重試
使用緩存預熱:在系統啟動時,預先將一些熱點數據加載到緩存中,以減輕緩存雪崩的影響。
監控和告警:對緩存的命中率、過期時間等進行監控,并在出現異常時及時發出告警,以便快速定位和解決問題。
通過采取這些策略,可以有效地降低緩存雪崩的風險。