如何解决从Clojure用Jedis连接到Heroku Redis的错误
在Heroku文档中,他们列出了一些用于从Java构造JedisPool实例的示例代码。
https://devcenter.heroku.com/articles/heroku-redis#connecting-in-java
public static JedisPool getPool() {
URI redisURI = new URI(System.getenv("REDIS_URL"));
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(10);
poolConfig.setMaxIdle(5);
poolConfig.setMinIdle(1);
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true);
poolConfig.setTestWhileIdle(true);
JedisPool pool = new JedisPool(poolConfig,redisURI);
return pool;
}
这个例子非常简单。从环境变量获取URI,进行一些设置,然后该池就可以工作了。我正在clojure中尝试此操作,这应该不成问题,但它可能是有用的上下文,而我构建池的代码如下所示。
;; ----------------------------------------------------------------------------
(defn create-client-pool
"Creates a connection pool for connecting to redis."
[config]
(JedisPool.
(doto (JedisPoolConfig.)
(.setMaxTotal 10)
(.setMaxIdle 5)
(.setMinIdle 1)
(.setTestOnBorrow true)
(.setTestOnReturn true)
(.setTestWhileIdle true))
(URI. (config/redis-url config))))
在config/redis-url
处提取REDIS_URL
环境变量的位置。 (我至少已通过日志记录测试了该部分)。当我尝试从池中获取连接时,出现此错误。
2020-10-24T18:50:56.359137+00:00 app[web.1]: {:type redis.clients.jedis.exceptions.JedisConnectionException
2020-10-24T18:50:56.359137+00:00 app[web.1]: :message "Could not get a resource from the pool"
2020-10-24T18:50:56.359137+00:00 app[web.1]: :at [redis.clients.jedis.util.Pool getResource "Pool.java" 59]}
2020-10-24T18:50:56.359138+00:00 app[web.1]: {:type redis.clients.jedis.exceptions.JedisDataException
2020-10-24T18:50:56.359138+00:00 app[web.1]: :message "ERR wrong number of arguments for 'auth' command"
2020-10-24T18:50:56.359139+00:00 app[web.1]: :at [redis.clients.jedis.Protocol processError "Protocol.java" 132]}]
在这一点上,我不知道如何处理,因为我正在做的事情应该与Heroku示例代码的语义完全匹配。也许它是在考虑比3.3更高的Jedis版本时编写的?感觉其他人应该会遇到这种情况,但是我找不到示例。
编辑:它可能与此https://devcenter.heroku.com/changelog-items/1932有关,但是即使知道他们更改了参数也无法让我知道要更改什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。