在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
okok
我們可以看到,你輸入多少條指令,就會有多少行返回記錄,並且告訴你它們的執行結果,如果你匯入的指令比較多,可以使用--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
Redis批量執行命令
只需要兩步驟!建議直接找台linux伺服器,使用linux自帶的文字編輯,避免window linux換行符不一致,還需要做換行的轉換。新建命令文件 vim batch.txt batch.txt中輸入批量命令 lpush batch queue 1 lpush batch queue 2 lpus...
REDIS從LINUX檔案寫入批量資料
cat data.txt redis cli pipe 附從mysql遷移的乙個高效技巧!在把乙個大表從 mysql 遷移到 redis 時,你可能會發現,每次提取 轉換 匯入一條資料是讓人難以忍受的慢!這裡有乙個技巧,你可以通過使用管道把 mysql 的輸出直接輸入到 redis cli輸入端,這...
ssh批量拷貝檔案 執行命令
bin bash length cat ip.txt wc l for i 1 i length i doecho schedule i length mg ip awk nr i ip.txt user awk nr i ip.txt password1 awk nr i ip.txt passw...