Cliente de conexão agrupada do serviço Redis serviceStack

Estou projetando um serviço da Web que usa o Redis como um banco de dados e quero conhecer as práticas recomendadas para usar o Redis conectando-se ao cliente do StackService.

O ponto é que eu tenho lido sobre Redis e descobri que a melhor maneira de interagir com o servidor é usando uma única conexão simultânea.

O problema é que apesar de eu estar usandoPooledRedisClientManager cada vez que um cliente da web faz uma solicitação ao serviço da web, recebo mais um cliente conectado (conexão aberta) ao servidor redis e esse número de clientes conectados aumenta sem limite, consumindo mais e mais memória.

O código de 'falha' da amostra:

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

O que eu fiz para resolver o problema, é criar uma classe implementando o padrão singleton com umRedisClient var; Que se oredisClient não inicializado cria um novo e, se estiver, retorna o inicializado.

Solução:

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");
}

Isso é uma boa prática?

Agradeço antecipadamente!

questionAnswers(1)

yourAnswerToTheQuestion