与clojure的绝地连接heroku redis时出错

bkhjykvo  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(183)

在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 但即使知道他们改变了一个参数,我也不知道该改变什么。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题