Redis從檔案中批量插入資料
簡介
在redis中,有時候需要批量執行某些命令,但是在redis的redis-cli下,只能一條條的執行指令,實在太麻煩了!
想到這,你是不是藍瘦香菇? 如果能將要執行的指令一行行儲存到檔案中,然後用一行命令將檔案中的命令一次執行完成,那肯定爽死了!
所以下面,我要帶你冒著手指懷孕的危險,讓你爽一把:
建立檔案
首先建立一個txt檔案,將要執行的指令一行一行寫進去,當然,你也可以從其他檔案拷貝進來。
server$ vim d1.txt
set myk12 v1
zadd zset12 0 a 1 b 3 c
sadd sset12 e f g hh
set myk22 v2
hset myset12 k1 v1
hmset myset22 k2 v2 k3 v3 k4 v4
set myk32 v3
轉碼
redis-cli中只支援dos格式的換行符
,如果你在Linux下、Mac下或者Windows下建立的檔案,最好都轉個碼。沒有轉碼的檔案,執行會失敗。
下面是轉碼指令, 只需要在命令後加入要轉碼的檔案即可:
server> unix2dos d1.txt
unix2dos: converting file d1.txt to DOS format...
如果使用unix2dos這個命令進行轉碼失敗,提示沒有這個命令,就需要進行安裝,我在在mac下用brew install unix2dos 安裝的unix2dos轉碼工具
brew install unix2dos
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
... 部分省略 ...
==> Pouring dos2unix-7.3.4.sierra.bottle.tar.gz
/usr/local/Cellar/dos2unix/7.3.4: 23 files, 344.3K
如果是CentOS,使用yum install unix2dos安裝unix2dos轉碼工具。
yum install unix2dos
已載入外掛:fastestmirror, security
... 部分省略 ...
已安裝:
unix2dos.x86_64 0:2.2-35.el6
完畢!
執行匯入
檔案轉碼完成後,就可以匯入,匯入使用cat和redis-cli命令組合,一個用來讀取檔案內容,一個用來傳送檔案到redis執行,如果要匯入的檔案和redis在同一臺伺服器上,可以直接將本地檔案中的指令匯入redis執行
server> cat d1.txt | redis-cli
OK
(integer) 3
(integer) 4
OK
(integer) 1
OK
OK
我們可以看到,你輸入多少條指令,就會有多少行返回記錄,並且告訴你它們的執行結果,如果你匯入的指令比較多,可以使用--pipe
這個引數來啟用pipe協議,它不僅僅能減少返回結果的輸出,還能更快的執行指令。
server> cat d1.txt | redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 7
如果你要匯入資料在遠端主機上,而且埠也是自定義的,那麼可以使用下面的方法將檔案匯入到遠端伺服器:
server> cat d1.txt | redis-cli -p 6380 -h 192.168.1.166 --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 7
資料匯入完成後,我們就應該去redis看看是不是匯入成功了:
server$ redis-cli -p 6380
127.0.0.1:6380> get myk1
"v1"
127.0.0.1:6380> hgetall myset1
1) "k1"
2) "v1"
127.0.0.1:6380> hgetall myset2
1) "k2"
2) "v2"
3) "k3"
4) "v3"
5) "k4"
6) "v4"
是不是很爽,以後redis中有什麼資料要處理,直接一行命令搞定!
總結:
- redis官方有批量匯入的方法,使用指令碼將檔案轉成redis協議支援的格式,可惜我測試時只能使用
set k1 v1
這類包含三個元素的指令完成批量匯入。遇到四個元素的,提示執行成功,但是資料就是看不到。 - 我使用的redis版本是2.8.0以上,如果你的版本較低,執行某個指令失敗,可能是版本太低了
- 另外強調一下轉碼的重要性,如果轉碼失敗,匯入肯定失敗
- 匯入指令檔案最好不要在一行結束留空格或者留空行,否則會出現意想不到的問題
相關文章
- mybatis插入資料、批量插入資料MyBatis
- 使用MySqlBulkLoader批量插入資料MySql
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- NodeJs批量require資料夾中的所有檔案NodeJSUI
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- Oracle批量插入資料insert all into用法Oracle
- 使用 【Ado.Net】 批量插入資料
- 把多個資料夾中的檔案批量放到一個資料夾
- Laravel 批量插入(如果資料存在刪除原資料)Laravel
- 使用Mybatis批量插入大量資料的實踐MyBatis
- JDBC 批量插入資料優化, 使用 addBatch 和 executeBatchJDBC優化BAT
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- [Django高階之批量插入資料、分頁器元件]Django元件
- 批量修改檔案中的圖片名稱
- 從cmd中匯入.SQL檔案並建立資料庫SQL資料庫
- mongodb資料庫中插入資料MongoDB資料庫
- 從鍵盤鍵入String型別的資料插入資料庫中型別資料庫
- 批量提取資料夾內檔名
- SpringBoot(18)---通過Lua指令碼批量插入資料到Redis布隆過濾器Spring Boot指令碼Redis過濾器
- linux|批量建立檔案、資料夾或刪除——萬用字元Linux字元
- MySQL插入圖片或pdf檔案到資料庫中(BLOB)--load_file函式MySql資料庫函式
- python資料視覺化-matplotlib入門(6)-從檔案中載入資料Python視覺化
- Redis中PipeLine使用(二)---批量get與批量setRedis
- 如何批量複製多個檔案到多個目錄中(批量複製檔案,多對多檔案高效操作的方法)
- Nodejs檔案批量重全名NodeJS
- 批量擷取pdf檔案
- Linux批量刪除檔案Linux
- 還用foreach在MyBatis批量插入資料,伺服器還沒崩?MyBatis伺服器
- win10資料夾中怎樣批量獲取所有檔名稱_win10批量提取資料夾內檔名的方法Win10
- 利用Python快速批量修改資料集檔名Python
- mysql從一張表中取出資料插入到另一張表MySql
- [20180718]拷貝資料檔案從dg庫.txt
- 使用pd從資料庫逆向生成pdm檔案資料庫
- insert批量插入優化方案優化
- 批量刪除大量小檔案
- linux 模糊批量刪除檔案Linux
- 批量抓取網頁pdf檔案網頁
- [Python]批量編譯pyc檔案Python編譯