我使用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服务。方法的调用未从框架返回。我的服务挂断了。每次都在发生。解决方法是仅重新启动我的服务。
假设您将Jedis与池一起使用,则会耗尽基础连接池。
每次调用都会redisTemplate.getConnectionFactory().getConnection()从连接池分配一个新的连接。你打connection.close()吗?如果不是,则池将耗尽。池开始阻止您的请求(希望另一个线程将返回一个连接,以便请求连接的线程可以使用它)。
redisTemplate.getConnectionFactory().getConnection()
connection.close()