Właściwie, gdy używasz PersonClient.Lists["urn:names:current"]
w rzeczywistości przechowujesz odwołanie do połączenia RedisClient, które nie jest bezpieczne dla wątków. Jest w porządku, jeśli jest w aplikacji GUI lub konsoli, ale nie jest idealne w wielowątkowej aplikacji internetowej. W większości scenariuszy chcesz używać fabryki połączeń bezpiecznych dla wątków, tj.
var redisManager = new PooledRedisClientManager("localhost:6379");
Działa bardzo podobnie do puli połączeń bazy danych. Więc kiedy chcesz uzyskać dostęp do RedisClient działa tak:
using (var redis = redisManager.GetClient())
{
var allItems = redis.As<Person>().Lists["urn:names:current"].GetAll();
}
Uwaga:.As<T>
to krótszy alias dla .GetTypedClient<T>
Innym wygodnym skrótem do wykonania wpisanego klienta z redisManagera jest:
var allItems = redisManager.ExecAs<Person>(r => r.Lists["urn:names:current"].GetAll());
Zwykle wolę przekazać IRedisClientsManager
w moim kodzie, więc nie utrzymuje połączenia RedisClient, ale może uzyskać do niego dostęp, kiedy tylko zajdzie taka potrzeba.