Saltar a contenido

dorm.cache

Capa de result-cache pluggable para lecturas queryset + single-row. Payloads firmados con HMAC-SHA256 sobre pickle así un Redis escribible no es vector RCE; versión de invalidación per-modelo cierra la race clásica read-then-write.

Backends

RedisCache es el default producción (multi-worker, multi-host). LocMemCache es el LRU en proceso — útil para tests, scripts single-process o capa barata frente a Redis.

Helpers

Integración QuerySet

QuerySet.cache(timeout=…) opta una sola queryset a result cache. Manager.cache_get(pk=…) / cache_get_many(pks=[…]) leen filas individuales por cache antes de la DB.

# Cache de queryset — lectura N+1 friendly de listing caliente.
top = Article.objects.filter(published=True).order_by("-rank")[:20].cache(60)

# Cache de fila — lecturas hot single-instance.
user = User.objects.cache_get(pk=42, timeout=300)
users = User.objects.cache_get_many(pks=[1, 2, 3])

Miss de cache / caída cae silencioso a DB — la fila de la DB es fuente de verdad.

Ver Caché de resultados (Redis) para configuración / invalidación completa.