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

Dmi*_*nov 5 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"));
}
Run Code Online (Sandbox Code Playgroud)

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

mp9*_*1de 5

假设您将 Jedis 与池化一起使用,您会遇到底层连接池耗尽的情况。

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