问题是这样的,现在需要把一个文件里的所有数据上传到redis的set中,文件里存储的就是ID,每行一个:
head id.list
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
为了将这一万条记录添加到redis中的某个set中,需要写一个脚本来执行这个操作。
主要的思路就是构造一个如下命令组成的一堆命令:
sadd setname 10000
然后使用redis-cli
将命令通过pipeline的形式发送到服务器。流程如下:
下面就是生成命令的shell脚本:
#!/bin/bash
INFILE=$1
SETKEY=$2
TOFILE=${SETKEY}'.data'
echo $TOFILE
rm $TOFILE >/dev/null 2>&1
while IFS= read -r line; do
echo "sadd $SETKEY $line" >> $TOFILE
done < $INFILE
unix2dos $TOFILE
cat $TOFILE | ./redis-cli --pipe
在脚本的最后,通过下面的命令将所有的redis命令发送到了redis服务器中:
cat $TOFILE | ./redis-cli --pipe
可以在redis中查看是否正确。
对于将数据导入redis的其它格式中,也是类似的过程,只需要把循环中添加的命令改成需要的形式就可以了。
Done