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.
``python 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.
``python 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:
cacheinvalidationstotal{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.