Redis從文件中批量執行命令

在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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章