【发布时间】:2012-06-05 01:51:21
【问题描述】:
我有一个长文本文件,其中包含我需要使用 redis 命令行界面执行的 redis 命令:
例如
DEL 9012012
DEL 1212
DEL 12214314
等等
我似乎无法找到一种比一次输入命令更快的方法。有几十万行,所以我不想把它们都堆成一个 DEL 命令,它们也不需要一次运行。
【问题讨论】:
标签: redis
我有一个长文本文件,其中包含我需要使用 redis 命令行界面执行的 redis 命令:
例如
DEL 9012012
DEL 1212
DEL 12214314
等等
我似乎无法找到一种比一次输入命令更快的方法。有几十万行,所以我不想把它们都堆成一个 DEL 命令,它们也不需要一次运行。
【问题讨论】:
标签: redis
以下代码适用于我在 mac 上使用 redis 2.4.7
./redis-cli < temp.redisCmds
这是否满足您的要求?或者您想看看是否有办法以编程方式更快地做到这一点?
【讨论】:
redis-cli -a <password> < temp.redisCmds
Get-Content cmds.txt | redis-cli
redis-cli --pipe < temp.redisCmds 时,它变得更快了。请参阅@zucaritask 的答案。
redis-cli --pipe 可用于批量插入。它从 2.6-RC4 和 Redis 2.4.14 开始可用。
例如:
cat data.txt | redis-cli --pipe
【讨论】:
--pipe 选项来解决这个问题?
--pipe 选项来执行大量EXPIRE 命令,因此它适用于插入以外的其他事情。注意:我必须确保文件中的每个命令都由回车和换行分隔,而不是只是换行。
如果您不想制作文件,请使用echo 和\n
echo "DEL 9012012\nDEL 1212" | redis-cli
【讨论】:
echo -e 使操作系统按预期解释\n。请记住,您始终可以使用 redis-cli -d <dilimiter> 更改默认的 redis dilimited
echo -e "DEL 9012012\nDEL 1212" | redis-cli
redis-cli <<<$'DEL 9012012\nDEL 1212'。您也可以代替$'',只使用双引号和实际的换行符(即不是\n)来分隔命令。
我知道这是一个旧线程,但添加它是因为它似乎错过了其他答案,而且对我来说效果很好。
如果您不想使用 echo 或显式添加 \n 或创建新文件,则在这里使用 heredoc 效果很好 -
redis-cli <<EOF
select 15
get a
EOF
【讨论】: