Evitar que múltiples workers recarguen el mismo dato al expirar simultáneamente
Prevención de cache stampede (thundering herd) cuando una key popular expira y múltiples workers intentan recalcularla simultáneamente, saturando el backend.
Usar en el cache_agent para keys de alta concurrencia como configuración de umbrales, blacklists y resultados de modelos. No es necesario para keys de sesión individual.
ttl = redis.ttl(key)
if ttl < threshold and random.random() < probability:
value = recompute()
redis.set(key, value, ex=original_ttl)
if redis.set(f'lock:{key}', 1, nx=True, ex=5):
value = recompute()
redis.set(key, value, ex=ttl)
redis.delete(f'lock:{key}')
ttl = base_ttl + random.randint(0, 60).