【问题标题】:Can I use redis-cli with a connection URL?我可以使用带有连接 URL 的 redis-cli 吗?
【发布时间】:2016-11-11 07:05:41
【问题描述】:

我已经习惯了psql,我可以通过向它提供连接字符串来使用它,而不必用不同的参数来打破它,也就是说,

psql postgres://<username>:<password>@<host>:<port>

例如,当我从 Heroku 获得这样的字符串时,这很有用。 我可以用redis-cli 做类似的事情吗?我想直接为它提供一个连接字符串,例如当我安装 Redis 附加组件时作为环境变量存储在 Heroku 上的那个。那可能吗?我想使用的语法示例:

redis-cli redis://<username>:<password>@<host>:<port>

【问题讨论】:

标签: heroku redis connection-string redis-cli


【解决方案1】:

不,目前 (v3.2.1) redis-cli 不支持 URI 连接模式。如果需要,您可以在 Redis repository 中提出功能或拉取请求。

更新: -u 选项随 Redis 4.0 一起发布,请参阅 Release notes。例如:

redis-cli -u redis://user:pass@host:6379/0

【讨论】:

  • 感谢您创建拉取请求:github.com/antirez/redis/pull/3409
  • 我很高兴 - 我会 ping antirez 关于它,所以它可能会包含在 v4 中:)
  • @AlessandroCosentino 感谢您更新回复 - 看起来我信守了我的承诺(现在我正在尝试使用 redis-benchmark 做同样的事情:P))
  • 它应该是redis-cli -u redis://user:pass@host:6379/0(注意 ..-cli 部分)。
  • 感谢@SergeyGrechin 指出这一点 - 已修复。
【解决方案2】:

对于那些等不及下一个 Redis 版本将无法更新他们的 redis-cli 的人,我制作了一个简单的 bash 函数,它似乎适用于我的情况(Heroku)。这是要添加到~/.bash_profile~/.bashrc

function redis-url() {
  # Get the first argument as the URL variable
  url=$1
  # Parse and generate the command: redis-cli -h [hostname] -p [port] -a [password]
  cmd=`echo $url | sed 's_redis://\(.*\):\(.*\)@\(.*\):\(.*\)_redis-cli -h \3 -p \4 -a \2_'`
  # Run the command
  $cmd
}

然后我可以在终端中输入以下内容:

redis-url redis://rediscloud:mysupersecurepassword@hostname.com:1234

【讨论】:

  • 仅供参考,Itamar 的 PR 中的 -u 选项已经随 Redis 4 一起发布,现在在 redis-cli 中。
  • 真的吗?究竟是哪个版本?目前在链接的仓库中仍然是on the unstable branch。下载页面目前将 4.0.6 列为最新版本。
  • 我正在运行 4.0.6 并且该功能在那里。也许不稳定的分支已经过时了?
  • 建议你把$cmd改成eval $cmd
猜你喜欢
  • 2021-01-10
  • 2015-12-28
  • 2011-02-22
  • 2016-04-08
  • 2017-05-17
  • 2014-05-05
  • 2011-03-19
  • 1970-01-01
  • 2016-04-24
相关资源
最近更新 更多