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

标签 bash redis redis-cli

是否可以调用redis-cli在 bash 中?

我试过:

#!/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"

它返回:

line 4: redis-cli: command not found

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

示例输入:

nt:60136667431

我运行的命令:

./updateT.sh input.txt 

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

最佳答案

撇开安装问题不谈,我猜你想要类似的东西

while read -r line; do
    redis-cli keys "$line" |
    xargs -n 1 echo redis-cli get
done <"$1"

如果 echo 打印出您认为正确的内容,则将其取出。如果您可以获取多个 key ,也许可以取出-n 1

给定输入行 nt:60136667431 这将执行

redis-cli keys nt:60136667431

并将每个输出行传递给 redis-cli get。因此,如果它打印 foobar 我们将以

结束
echo redis-cli get foo
echo redis-cli get bar

...如果这些是您最终想要执行的命令,显然再次取出 echo。如果你取出 -n 1 它会尽可能多地收集到

echo redis-cli get foo bar

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

关于bash - 如何使用 Bash 调用 redis-cli get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54820303/

相关文章:

ubuntu - 等待集群加入....永远不会结束 redis-trib.rb Redis 3.2.9

redis - 清除 Windows 机器上的 Redis-Cli 历史记录

bash - 在 shell 中检索变量的值

linux - Unix 按列整数过滤

linux - 如何删除第二列中的值出现特定次数的文件的行?

Redis处理队列管理机制

redis - 如何找到 Redis 主题(键的子集)的大小?

python - 在传入设置时使用 shell 脚本运行自定义 django manage.py 命令

Php Redis 在 Sets 中添加值而不排序

data-structures - Redis - 一个一个地插入字符串并一次全部删除的数据结构