En realidad, cuando usa PersonClient.Lists["urn:names:current"]
en realidad está almacenando una referencia a una conexión RedisClient que no es segura para subprocesos. Está bien si está en una aplicación GUI o Consola, pero no es ideal en una aplicación web de subprocesos múltiples. En la mayoría de los escenarios, desea utilizar una fábrica de conexiones seguras para subprocesos, es decir,
var redisManager = new PooledRedisClientManager("localhost:6379");
Que actúa de manera muy similar a un grupo de conexiones de base de datos. Entonces, cada vez que desee acceder a RedisClient, funciona como:
using (var redis = redisManager.GetClient())
{
var allItems = redis.As<Person>().Lists["urn:names:current"].GetAll();
}
Nota:.As<T>
es un alias más corto para .GetTypedClient<T>
Otro atajo conveniente para ejecutar un cliente escrito desde un redisManager es:
var allItems = redisManager.ExecAs<Person>(r => r.Lists["urn:names:current"].GetAll());
Por lo general, prefiero pasar IRedisClientsManager
en mi código para que no tenga una conexión RedisClient, pero pueda acceder a ella cuando sea necesario.