cache_invalidation
SKILL.md
cache_invalidation
Estrategia de invalidación activa de caché para mantener la consistencia entre Redis y PostgreSQL. Cuando los datos de origen cambian, las keys de caché correspondientes se eliminan proactivamente.
When to use
Usar en el cache_agent para invalidar datos cacheados cuando se actualizan en PostgreSQL: blacklists, configuración de umbrales, y datos de sesión modificados.
Instructions
- Write-through: al actualizar PostgreSQL, invalidar Redis en la misma transacción.
async with db.transaction(): await db.execute(update_query) await redis.delete(f'cache:{key}') - Pattern-based: invalidar por patrón:
redis.delete(*redis.keys('config:*')). - Para blacklist: usar pub/sub para notificar a todas las instancias.
redis.publish('cache:invalidate', json.dumps({'pattern': 'blacklist:*'})) - Implementar versioning de caché:
cache:v2:keyal cambiar estructura de datos. - Nunca depender solo de TTL para consistencia de datos críticos; invalidar activamente.
- Registrar invalidaciones en métricas:
cache_invalidations_total{pattern}.
Notes
- Evitar
KEYS *en producción; usarSCANpara buscar keys por patrón. - La invalidación por pub/sub es eventual (milisegundos de delay); aceptable para este caso de uso.
- Para la configuración de umbrales, usar polling desde Redis cada 30s en lugar de invalidación.