【发布时间】:2025-12-06 22:55:01
【问题描述】:
我一直在尝试使用 redis-cli 获取 redis 数据库中的所有值。
这主要是通过redis-cli keys "*"(返回所有键)并将其传递给redis-cli get(返回键的值)来完成的。
我后来(在 SO 上)发现了一种方法:
echo 'keys YOURKEY*' | redis-cli | sed 's/^/get /' | redis-cli
但在此之前,我尝试过此操作,但 get 命令似乎从未运行过。我做错 xargs 了吗?:
redis-cli keys "*" | xargs -0 -I % redis-cli get "%"
我很欣赏“为什么这不起作用”的问题不受欢迎,但我认为答案将为被 xargs 困惑的人提供信息。
【问题讨论】:
-
“为什么这不起作用”问题是所有好的 * Qs 的基础。但是没有完整信息的 Q 是不受欢迎的,因为您忽略了向我们显示错误消息或其他“它不起作用”的证据;-/,是吗?你知道
-0对xargs做了什么吗?检查手册页。可能还有其他问题。祝你好运。 -
事实证明 -0 标志是问题所在,我将其包括在内是因为我的一些键包含空格,我错误地认为它会解决这个问题。没有进一步的信息,因为命令的后半部分实际上没有输出任何内容。
redis-cli keys "*" | xargs -0 -I % "%"会输出键名列表,但包含 redis-cli get 会导致输出为空。没有错误信息!