小编典典

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

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服务。方法的调用未从框架返回。我的服务挂断了。每次都在发生。解决方法是仅重新启动我的服务。


阅读 528

收藏
2020-06-20

共1个答案

小编典典

假设您将Jedis与池一起使用,则会耗尽基础连接池。

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

2020-06-20