删除Redis中的大量key

ran*_*its 0 bash xargs redis

尝试做类似的事情:

# redis-cli keys "resque:lock:*" |xargs -0 redis-cli del
xargs: argument line too long
Run Code Online (Sandbox Code Playgroud)

解决此问题的最佳方法是什么?

Joh*_*ica 6

摆脱-0. 我不熟悉 redis,但据我所知,redis-cli keys它不使用 NUL 分隔符。

它没有它的原因是因为它处理引号的方式。来自man xargs

xargs从标准输入读取项目,以空格(可以用双引号或单引号或反斜杠保护)或换行符分隔,并执行命令(默认为 /bin/echo)一次或多次,后跟任何初始参数通过从标准输入读取的项目。标准输入上的空行被忽略。

试试xargs -d '\n'。这将禁用 xarg 的“智能”引用处理,并告诉它只逐行读取参数。