如何高效地在redis中设置多个相关键?

How to efficiently set multiple related keys in redis?

我想在 bash 脚本中执行以下操作:

num_total_keys=0x1FFFF

for ((i = 0; i <= $num_total_keys; i++))
do
    redis-cli SET some_prefix:$i True > /dev/null
done

然而,当我执行这个时,它需要很长时间。有没有更有效的方法来做到这一点?

经验法则:

如果您的命令接受流水线 data/instructions;不要在 shell 循环中重复 运行 您的命令,而是在将其作为单个调用通过管道传输到您的命令之前构建所有命令,如下所示:

#!/usr/bin/env sh

i=131071

while [ $i -ge 0 ]; do
  printf 'SET some_prefix:%d True\n' $i
  i=$((i - 1))
done | redis-cli --pipe

或者使用 Bash 的 brace expansion:

printf 'SET some_prefix:%d True\n' {131071..0} | redis-cli --pipe