sql >> Base de Datos >  >> NoSQL >> Redis

¿Es este un uso válido de ServiceStack Redis?

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.