2016-03-06 58 views
0

我使用debasishg/scala-redis作为我的Redis客户端。 我希望它支持多线程执行。继他们的文档:https://github.com/debasishg/scala-redis我定义如何释放由RedisClientPool分配的Redis Scala客户端?

val clients = new RedisClientPool("localhost", 6379) 

,然后用它在每次访问的Redis:

clients.withClient { 
    client => { 
    ... 
    } 
} 

我的问题是,我需要释放每个分配的客户端?如果是这样,那么做一个正确的方法是什么?

回答

2

如果你看一下构造为RedisClientPool,有一个默认值maxIdle(,按照this“可以坐在池空闲的最大对象数”),并为poolWaitTimeout的默认值。您可以更改这些值,但基本上如果您等待poolWaitTimeout,则保证清除您的资源,但待机状态下的maxIdle客户端除外。

另外,如果您不能忍受idle clients的想法,可以用mypool.close关闭整个池,并在需要时再次创建它,但根据您的使用情况可能会失败(使用池的目的)如果这是一个cron工作,我想这很好)。