Constructor CacheInvalidator
- Namespace
- UsluzionicaServer.Infrastructure.Redis
- Assembly
- UsluzionicaServer.dll
CacheInvalidator(RedisConnection, ILogger<CacheInvalidator>)
Obaveštava SVE instance da je neki keš zastareo — preko Redis pub/sub-a.
PROBLEM KOJI REŠAVA: Neki keševi su u Redis-u i tamo ih je dovoljno obrisati jednom, jer ih sve instance dele. Ali CategorySearchIndex drži foldovana imena kategorija U MEMORIJI SVAKOG PROCESA (namerno — pogađa se na svakom tokenu svake pretrage, pa mrežni poziv po tokenu ne dolazi u obzir).
Kad admin preimenuje kategoriju, instanca koja je obradila taj zahtev očisti SVOJU kopiju. Druga instanca ne zna ništa i nastavlja da pretražuje po starom imenu — do isteka TTL-a od 10 minuta.
Pub/sub to rešava odmah: instanca koja je izmenila objavi poruku na kanal, sve instance (uključujući nju samu) je prime i očiste svoju kopiju.
FALLBACK: ako Redis nije dostupan, poruka se ne pošalje i svaka instanca se oslanja na svoj TTL. Zastarelost je tada ograničena na 10 minuta umesto na milisekunde — sporije, ali nikad trajno pogrešno.
public CacheInvalidator(RedisConnection redis, ILogger<CacheInvalidator> logger)
Parameters
redisRedisConnectionloggerILogger<CacheInvalidator>