(转)Redis从文件中批量执行命令

http://blog.csdn.net/u012689336/article/details/53332653

Redis中,如果要批量执行某些命令,在redis的redis-cli下,只能一条条的执行指令,实在太麻烦了! 

如果把要执行的命令一行行存储到文件中,然后一次性执行完成。

1、创建文件

首先创建一个txt文件,将要执行的指令一行一行写进去。

[sparkadmin@hadoop4 redis-3.2.4]$ vim d1.txt 
set mykey1 value1
zadd sortedsort 0 a 1 b 3 c
sadd sort mongodb mysql oracle
set mykey2 value2
hmset hash name "redis" description "redis basic commands for caching" likes 20

2、执行导入

导入使用cat 和redis-cli命令组合,一个用来读取文件内容,一个用来发送文件到redis执行,如果要导入的文件和redis在同一台服务器上,可以直接将本地文件中的指令导入redis执行

[sparkadmin@hadoop4 redis-3.2.4]$ cat d1.txt | redis-cli -a runoob
OK
(integer) 3
(integer) 3
OK
OK

我们可以看到,你输入多少条指令,就会有多少行返回记录,并且告诉你它们的执行结果,如果你导入的指令比较多,可以使用--pipe 这个参数来启用pipe协议,它不仅仅能减少返回结果的输出,还能更快的执行指令。

[sparkadmin@hadoop4 redis-3.2.4]$ cat d1.txt | redis-cli -a runoob --pipe
All data transferred. Waiting for the last reply...
ERR unknown command 'add'
ERR unknown command 'add'
ERR unknown command 'et'
ERR wrong number of arguments for MSET
Last reply received from server.
errors: 4, replies: 5

如果这个提示不知道的命令,这是因为redis-cli中只支持doc格式的换行符 \r\n ,如果你在Linux下、Mac下或者Windows下创建的文件,最好都转个码。没有转码的文件,执行会失败。 

[sparkadmin@hadoop4 redis-3.2.4]$ unix2dos d1.txt 
-bash: unix2dos: command not found

提示没有这个命令,就需要进行安装。

[sparkadmin@hadoop4 redis-3.2.4]$ sudo yum install unix2dos -y

再进行转码:

[sparkadmin@hadoop4 redis-3.2.4]$ unix2dos d1.txt             
unix2dos: converting file d1.txt to DOS format ...

[sparkadmin@hadoop4 redis-3.2.4]$ cat d1.txt | redis-cli -a runoob --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 5

如果你要导入数据到远程机器上,那么可以使用下面的方法将文件导入到远程服务器:

[sparkadmin@hadoop4 redis-3.2.4]$ cat d1.txt | redis-cli -a runoob -p 6380 -h 192.168.1.100 --pipe

All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 5

猜你喜欢

转载自jahu.iteye.com/blog/2387880