Spring RedisTemplate:8次调用后方法键挂起

时间:2016-04-14 12:31:07

标签: java spring redis

我使用Spring RedisTemplate(spring-data-redis 1.7.1)与Redis进行通信。我需要通过regexp获取然后删除键(例如:" context:user1:*")。我使用方法" RedisTemplate.keys(...)" 获取密钥数组

{
    String key = String.format("%s:%s:%s", context, userId,"*");
    Set<byte[]> keys = redisTemplate.getConnectionFactory().getConnection().keys(key.getBytes());
    logger.debug(String.format("test log"));
}

但是在8-9迭代调用restTemplates.keys(...)停止执行我的java服务。方法的调用不从框架返回。我的服务挂断了。每次都会发生这种情况。解决方法只是重启我的服务。

1 个答案:

答案 0 :(得分:4)

假设您正在使用Jedis进行池化,则会导致底层连接池耗尽。

每次调用redisTemplate.getConnectionFactory().getConnection()都会从连接池中分配新连接。你打电话给connection.close()吗?如果没有,游泳池就会筋疲力尽。池开始阻止您的请求(希望另一个线程将返回一个连接,以便请求连接的线程可以使用它。)