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.