我可以使用连接URL与redis-cli建立连接吗?

36

我习惯使用psql,只需提供连接字符串即可,无需将其分为不同的参数。

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

当我从Heroku获取这样的字符串时,这非常有用。例如,我能否使用redis-cli做类似的事情?我想直接提供一个连接字符串给它,就像在安装Redis插件时存储在Heroku上的环境变量一样。这可能吗?以下是我想要使用的语法示例:

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

我在 Redis 问题跟踪器上打开了一个功能请求:https://github.com/antirez/redis/issues/3399 - Alessandro Cosentino
感谢Itamar在这里和那里的回复。 - Alessandro Cosentino
2个回答

59

目前(v3.2.1版本)redis-cli不支持URI连接模式。如果您想要,可以在Redis存储库中创建一个功能或拉取请求。

更新: -u选项已经随Redis 4.0一起发布,详见发行说明。例如:

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

4
谢谢您创建的拉取请求:https://github.com/antirez/redis/pull/3409 - Alessandro Cosentino
1
没问题 - 我会联系antirez,希望它能被包含在v4中 :) - Itamar Haber
2
@AlessandroCosentino 感谢您更新回复 - 看起来我兑现了承诺(现在我正试图做同样的事情,使用redis-benchmark :P) - Itamar Haber
1
请注意,应该是 redis-cli -u redis://user:pass@host:6379/0(注意 ..-cli 部分)。 - Sergey Grechin
谢谢@SergeyGrechin指出这个问题 - 已经修复。 - Itamar Haber

12

对于那些迫不及待等待下一个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

FYI,Itamar的PR中的-u选项已经随Redis 4一起发布,并且现在已经在redis-cli中了。 - Alessandro Cosentino
真的吗?它确切的版本是什么?目前在链接的存储库中仍处于不稳定分支。下载页面当前列出4.0.6作为最新版本。 - Bruno A.
我正在运行4.0.6版本,该功能已经存在。也许不稳定的分支已经过时了? - Alessandro Cosentino
我建议你将$cmd更改为eval $cmd - tkhuynh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接