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.