我使用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服务。方法的调用不从框架返回。我的服务挂断了。每次都会发生这种情况。解决方法只是重启我的服务。
答案 0 :(得分:4)
假设您正在使用Jedis进行池化,则会导致底层连接池耗尽。
每次调用redisTemplate.getConnectionFactory().getConnection()
都会从连接池中分配新连接。你打电话给connection.close()
吗?如果没有,游泳池就会筋疲力尽。池开始阻止您的请求(希望另一个线程将返回一个连接,以便请求连接的线程可以使用它。)