用脚本批量执行redis命令

如果将命令写到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


你可能感兴趣的:(redis)