首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bash调用redis-cli get?

如何使用Bash调用redis-cli get?
EN

Stack Overflow用户
提问于 2019-02-22 12:56:20
回答 1查看 9K关注 0票数 0

可以在bash中调用redis-cli吗?

我试过了:

代码语言:javascript
复制
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
        echo 'keys $line' | redis-cli | sed 's/^/get /' | redis-cli
done < "$1"

它返回:

代码语言:javascript
复制
line 4: redis-cli: command not found

我正在尝试匹配redis密钥nt:<numbers>作为来自输入文件和显示的密钥。

示例输入:

代码语言:javascript
复制
nt:60136667431

我运行的命令:

代码语言:javascript
复制
./updateT.sh input.txt 

有没有什么方法可以在脚本中调用redis-cli get cmd,让很多键值作为输入传递?

EN

回答 1

Stack Overflow用户

发布于 2019-02-22 14:45:42

抛开安装问题不谈,我猜你想要像这样的东西

代码语言:javascript
复制
while read -r line; do
    redis-cli keys "$line" |
    xargs -n 1 echo redis-cli get
done <"$1"

如果echo打印的内容对您来说是正确的,请取出它。如果您可以get多个密钥,也许可以去掉-n 1

给定输入行nt:60136667431,这将执行以下操作

代码语言:javascript
复制
redis-cli keys nt:60136667431

并将其中的每一条输出行传递给redis-cli get。因此,如果它打印foobar,我们最终将得到

代码语言:javascript
复制
echo redis-cli get foo
echo redis-cli get bar

..。显然,如果这些是您最终想要执行的命令,那么再一次去掉echo。如果去掉-n 1,它会收集尽可能多的数据到

代码语言:javascript
复制
echo redis-cli get foo bar

但是,如果您有数以千计的结果,由于底层操作系统中的参数列表长度限制,它可能仍然需要将命令行拆分为多个命令。(谷歌ARG_MAX。)我不知道redis-cli是否支持这种语法;简单地谷歌一下就知道不支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54820303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档