如果将命令写到txt文件中,形式为每行一个命令:set key value
然后用cat example.txt | redis-cli --pipe
会提示All data transferred. Waiting for the last reply...
ERR syntax error
Last reply received from server.
errors: 1, replies: 2
需要将其转换成raw redis protocol形式,然后用unix2dos将文件转换,可以用shell脚本来实现前面的操作,再用cat example.txt | redis-cli --pipe
代码如下:
第一个参数是生成的set key value的文件,每行一个命令
第二个是生成的raw redis protocol文件
#!/bin/bash
if [ $# -lt 2 ]
then
echo "Usage: file1 file2"
exit -1
fi
FILEIN=$1
FILEOUT=$2
function gen_raw_redis
{
while read -a col
do
proto="${proto}*${#col[@]}\n"
for ((i=0; i < ${#col[@]}; i++))
do
proto="${proto}\$${#col[i]}\n${col[i]}\n"
done
done < ${FILEIN}
echo -e ${proto} > ${FILEOUT}
unix2dos ${FILEOUT}
}
gen_raw_redis