sql >> Database >  >> NoSQL >> Redis

Is dit een geldig gebruik van ServiceStack Redis?

Eigenlijk wanneer u PersonClient.Lists["urn:names:current"] gebruikt je slaat eigenlijk een verwijzing op naar een RedisClient-verbinding die niet thread-safe is. Het is oké als het zich in een GUI of Console-app bevindt, maar niet ideaal in een web-app met meerdere threads. In de meeste scenario's wilt u een draadveilige verbindingsfabriek gebruiken, d.w.z.

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

Die heel erg op een databaseverbindingspool lijkt. Dus wanneer u toegang wilt tot de RedisClient werkt als volgt:

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

Opmerking:.As<T> is een kortere alias voor .GetTypedClient<T> Een andere handige snelkoppeling om een ​​getypte client uit te voeren vanuit een redisManager is:

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

Ik geef er meestal de voorkeur aan om IRedisClientsManager . door te geven in mijn code zodat het geen RedisClient-verbinding heeft, maar er toegang toe heeft wanneer dat nodig is.



  1. Gebruik mongoexport met een --query voor ISODate

  2. Een overzicht van database-indexering voor MongoDB

  3. Node.js - wacht op meerdere asynchrone oproepen

  4. Hoe hervat hash-slots van een bepaald knooppunt in redis-cluster in geval van een harde storing?