PooledRedisClientManager not releasing connections

前端 未结 2 1900
暗喜
暗喜 2021-02-10 16:53

I am storing lists of json data in redis and accessing it using the ServiceStack c# client. I am essentially managing my own foreign keys, where I store a zrange o

相关标签:
2条回答
  • 2021-02-10 17:04

    edit The below approach is not recommended - you should take a dependency on the IRedisClientsManager and wrap all redis client calls inside a using() block, otherwise you will be bitten by gremlins.

    I've been having similar problems getting Windsor to play nicely with the PooledRedisClientsManager, in the end this seemed to work:

            container.Register(
                Component.For<IRedisClientsManager>()
                         .Instance(redisClients)
                         .LifestyleSingleton(),
    
                Component.For<IRedisClient>()
                         .UsingFactoryMethod(c => c.Resolve<IRedisClientsManager>().GetClient(),
                                            managedExternally: true));
        }
    

    The managedExternally parameter tells Windsor to not try to apply decommissioning concerns to the IRedisClients and let the PooledRedisClientsManager handle recycling.

    0 讨论(0)
  • 2021-02-10 17:05

    Currently my biggest challenge is that client connections are not being closed.

    You are using the 'PooledRedisClientManager' so my understanding is that the client connections should not be closed, just put into the pool for reuse. It looks like your pool size is 100 connections.

    You can try using var mgr = new BasicRedisClientManager("localhost:6379") which should dispose of the client.

    0 讨论(0)
提交回复
热议问题