public static PooledRedisClientManager prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath });
static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
{
return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
{
MaxWritePoolSize = 1,
MaxReadPoolSize = 1,
AutoStart = true
});
}
这是连接池配置,这个封装类用的单例模式
使用的时候
using (IRedisClient redis = prcm.GetClient())
{
return redis.Lists[Key].Contains(value);
}
这一次OK,第二次调用GetClient()的时候提示无连接可用,为啥连接没有释放出来?我设置为1个size是为了测试,因为我设置成50或者100,调用50次或者100次后还是会提示无连接可用,版本是3.9的
在StackOverFlow上也看到老外有类似的情况,有个老外设置的是10000个size一样提示无连接可用,后来改成静态连接,但是我不想用静态的,既然提供连接池,为啥会出现这种情况,哪位大神能指出下,或者我这个写法有误?
看源码PooledRedisClientManager 里有DisposeClient(RedisNativeClient client) 方法供调用,手动去释放
楼上说的也不行,DisposeClient代码根本没有释放。
client.Active = false;
Monitor.PulseAll(readClients);