首页 新闻 搜索 专区 学院

ServiceStack.Redis 连接池连接并没有释放出来

0
悬赏园豆:10 [待解决问题]

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一样提示无连接可用,后来改成静态连接,但是我不想用静态的,既然提供连接池,为啥会出现这种情况,哪位大神能指出下,或者我这个写法有误?

班级中队长的主页 班级中队长 | 初学一级 | 园豆:94
提问于:2015-01-22 21:15
< >
分享
所有回答(2)
0

看源码PooledRedisClientManager 里有DisposeClient(RedisNativeClient client) 方法供调用,手动去释放

饭小桶 | 园豆:202 (菜鸟二级) | 2015-03-25 10:48
0

楼上说的也不行,DisposeClient代码根本没有释放。

 client.Active = false;
 Monitor.PulseAll(readClients);

—八戒— | 园豆:202 (菜鸟二级) | 2015-10-26 15:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册