Table of Contents

Class RedisConnection

Namespace
UsluzionicaServer.Infrastructure.Redis
Assembly
UsluzionicaServer.dll

Jedna deljena veza ka Redis-u za ceo proces.

PRAVILO CELE FAZE B: Redis je UBRZANJE I DELJENO STANJE, NIKAD USLOV ZA RAD. Aplikacija mora da se digne i da radi i kad Redis uopšte nije konfigurisan (lokalni razvoj, integracioni testovi) i kad je konfigurisan ali mrtav (ispao je u produkciji). Nijedan korisnički zahtev ne sme pasti zbog keša.

Dve stvari to omogućavaju:

  1. AbortOnConnectFail = false — bez toga ConnectAsync baca izuzetak ako Redis nije tu u trenutku starta, i ceo proces umire. Sa njim, biblioteka vrati objekat koji je „trenutno nepovezan" i sama se povezuje u pozadini čim Redis oživi. Ovo je najvažnija jedna linija u celoj Fazi B.

  2. IsAvailable — svaki pozivalac prvo pita da li Redis uopšte postoji, umesto da hvata izuzetke po celom kodu.

StackExchange.Redis je namerno singleton: ConnectionMultiplexer je thread-safe, multipleksira sve komande preko JEDNE TCP veze i skup je za pravljenje. Otvaranje veze po zahtevu je klasična greška koja obori Redis brže nego bilo koje opterećenje.

public sealed class RedisConnection : IAsyncDisposable
Inheritance
RedisConnection
Implements
Inherited Members

Constructors

RedisConnection(IConfiguration, ILogger<RedisConnection>)

Properties

IsAvailable

True samo ako je Redis konfigurisan I trenutno dostupan.

IsConfigured

True ako je konekcija uopšte konfigurisana (bez obzira na trenutno stanje).

Multiplexer

Multiplexer za slučajeve koji traže direktan pristup (SignalR, Data Protection).

Methods

DisposeAsync()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.

GetDatabase()

Baza za komande, ili null ako Redis nije dostupan. Pozivaoci treba da provere null i tiho preskoče — ne da bacaju.

GetSubscriber()

Subscriber za pub/sub (invalidacija keša), ili null.