Table of Contents

Namespace adas_core.Application.Services.Caching

Classes

CacheDispatcher

Orquestador de caché. Selecciona el backend (Redis, InMemory, None) según CacheSettings y la entidad del key. Implementa ICacheService y delega en el backend elegido.

CacheService

Implementación de caché en memoria con soporte de locking seguro mediante LockManagerService + InMemoryLockProvider. Compatible con la interfaz ICacheService incluyendo GetOrSet.

InMemoryLockProvider

Implementación local del sistema de locking por clave. Se basa en SemaphoreSlim y solo controla concurrencia DENTRO del proceso. Para CacheService (in-memory).

LockManagerService

Servicio que ejecuta acciones dentro de una sección crítica controlada por lock. CacheService lo usará para evitar condiciones de carrera en GetOrSet. Funciona igual para locks locales o distribuidos.

NoCacheService

Implementación nula de ICacheService. No almacena nada, no devuelve nada y no interfiere con el flujo. Se usa cuando el CacheMode es "None".

RedisLockProvider

Lock distribuido en Redis. Usa token por adquisición (owner) y liberación segura con script Lua: borra la key solo si el valor coincide.

RedisService

Represents a Redis-based implementation of the ICacheService interface for caching operations.