Table of Contents

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

redis RedisConnection
logger ILogger<CacheInvalidator>