Redis
 sql >> Database >  >> NoSQL >> Redis

È un utilizzo valido di ServiceStack Redis?

In realtà quando usi PersonClient.Lists["urn:names:current"] stai effettivamente memorizzando un riferimento a una connessione RedisClient che non è thread-safe. Va bene se si trova in un'app GUI o Console, ma non è l'ideale in un'app Web multi-thread. Nella maggior parte degli scenari si desidera utilizzare una factory di connessione thread-safe, ad esempio

var redisManager = new PooledRedisClientManager("localhost:6379");

Che agisce in modo molto simile a un pool di connessioni al database. Quindi ogni volta che vuoi accedere al RedisClient funziona come:

using (var redis = redisManager.GetClient())
{
    var allItems = redis.As<Person>().Lists["urn:names:current"].GetAll();
}

Nota:.As<T> è un alias più breve per .GetTypedClient<T> Un'altra comoda scorciatoia per eseguire un client digitato da un redisManager è:

var allItems = redisManager.ExecAs<Person>(r => r.Lists["urn:names:current"].GetAll());

Di solito preferisco passare da IRedisClientsManager nel mio codice in modo che non contenga una connessione RedisClient ma possa accedervi ogni volta che è necessario.