PooledRedisClientManager não está liberando conexões

Eu estou armazenando listas de dados json em redis e acessando-o usando o cliente c # ServiceStack. Eu estou essencialmente gerenciando minhas próprias chaves estrangeiras, onde eu armazeno umzrange de ids e eu uso uma interface interna para o meu aplicativo para puxar os id dozrange e, em seguida, buscar os objetos json subjacentes do Redis e empacotá-los como uma lista para retornar a outras partes do meu aplicativo.

Estou usando oPooledRedisClientManager como eu antecipo que o Redis seja hospedado em um servidor diferente do servidor que está executando o código.

Eu estou fazendo todo o meu trabalho de desenvolvimento localmente no Windows 8, usando o servidor MSOpenTech Redis. Atualmente, meu maior desafio é que as conexões de clientes não estão sendo fechadas.

Meu Redis persister está sendo injetado com uma instância deIRedisClientManager (IoC é CastleWindsor). Esse código é executado no contexto de uma função de trabalhador azul.

É assim que estou buscando itens de um zrange:

public class MyRedisPersister<T> : IResourcePersister<T>
{ 
    IRedisClientManager _mgr;
    public MyRedisPersister(IRedisClientManager mgr)
    {
        _mgr = mgr;
    }

    public IResourceList<T> Get<T>(string key, int offset, int count) where T
    {
        using (var redis = _clientManager.GetClient())
        {
            var itemKeys = redis.GetRangeFromSortedSet(key, offset, offset + count - 1).ToList();
            var totalItems = redis.GetSortedSetCount(key);

            if (itemKeys.Count == 0)
            {
                return new ResourceList<T>
                    {
                        Items = new List<T>(),
                        Offset = 0,
                        PageSize = 0,
                        TotalItems = 0,
                        TotalPages = 0
                    };
            }
            else
            {
                return new ResourceList<T>
                    {
                        Items = itemKeys.Select(k => redis.Get<T>(k)).ToList(),
                        Offset = offset,
                        PageSize = count,
                        TotalItems = totalItems,
                        TotalPages = (int) Math.Ceiling((float) totalItems/count)
                    };
            }
        }
    }
}

Este é o código que eu uso para registrar oIRedisClientManager

var mgr = new PooledRedisClientManager(100, 10, "localhost:6379");
container.Register(Component.For<IRedisClientsManager>().Instance(mgr).LifeStyle.Singleton);

Qualquer ajuda seria muito apreciada.

questionAnswers(2)

yourAnswerToTheQuestion