# 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.