Redis serviceStack cliente de conexión agrupada

Estoy diseñando un servicio web que usa Redis como una base de datos, y quiero conocer las mejores prácticas para usar Redis conectando con el cliente StackService.

El punto es que he estado leyendo sobre Redis y descubrí que la mejor manera de interactuar con el servidor es mediante una única conexión simultánea.

El problema es que a pesar de que estoy usandoPooledRedisClientManager Cada vez que un cliente web realiza una solicitud al servicio web, obtengo un cliente más conectado (conexión abierta) al servidor redis y este número de clientes conectados aumenta sin límite y consume más y más memoria.

El código de 'falla' de muestra:

PooledRedisClientManager pooledClientManager = new PooledRedisClientManager("localhost");
var redisClient = pooledClientManager.GetClient();
using (redisClient)
{
   redisClient.Set("key1", "value1");
}

Lo que hice para resolver el problema es crear una clase que implementa el patrón de singleton con una estática.RedisClient var; Que si elredisClient no se inicializa crea uno nuevo y, si lo está, devuelve el inicializado.

Solución:

public class CustomRedisPooledClient
{
    private static CustomRedisPooledClient _instance = null;
    public RedisClient redisClient = null;

    // Objeto sincronización para hacer el Lock 
    private static object syncLock = new object();

    private CustomRedisPooledClient()
    {
        redisClient = new RedisClient("localhost");
    }

    public static CustomRedisPooledClient GetPooledClient()
    {
        if (_instance == null)
        {
            lock (syncLock)
            {
                if (_instance == null)
                {
                    _instance = new CustomRedisPooledClient();
                }
            }
        }
        return _instance;
    }
}

CustomRedisPooledClient customRedisPooledClient = CustomRedisPooledClient.GetPooledClient();
using (customRedisPooledClient.redisClient)
{
    customRedisPooledClient.redisClient.Set("key1", "value1");
}

¿Es esta una buena practica?

¡Gracias de antemano!

Respuestas a la pregunta(1)

Su respuesta a la pregunta