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

Er dette en gyldig brug af ServiceStack Redis?

Faktisk når du bruger PersonClient.Lists["urn:names:current"] du gemmer faktisk en reference til en RedisClient-forbindelse, som ikke er trådsikker. Det er ok, hvis det er i en GUI eller Console-app, men ikke ideelt i en multi-threaded web-app. I de fleste scenarier ønsker du at bruge en trådsikker forbindelsesfabrik, dvs.

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

Hvilket fungerer meget som en databaseforbindelsespulje. Så hver gang du ønsker at få adgang til RedisClient fungerer som:

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

Bemærk:.As<T> er et kortere alias for .GetTypedClient<T> En anden praktisk genvej til at udføre en indtastet klient fra en redisManager er:

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

Jeg foretrækker normalt at sende IRedisClientsManager rundt i min kode, så den ikke har en RedisClient-forbindelse, men kan få adgang til den, når den skal.



  1. Sorteret sæt af fast størrelse i Redis?

  2. In-memory cache med LRU-udløb

  3. MongoDB $tan

  4. Mongo Find()-funktionen vil ikke udelukke _id