在heroku文档中,他们列出了一些从java构建jedispool示例的示例代码。
https://devcenter.heroku.com/articles/heroku-redis#connecting-在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更古老的绝地武士版本写的?我觉得其他人应该会遇到这种情况,但我找不到例子。
编辑:可能与此有关https://devcenter.heroku.com/changelog-items/1932 但即使知道他们改变了一个参数,我也不知道该改变什么。
暂无答案!
目前还没有任何答案,快来回答吧!