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
- Oracle:從SQL檔案批量匯入資料OracleSQL
- oracle批量插入資料Oracle
- MyBatis 批量插入資料MyBatis
- 向表中插入大批量資料
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- 使用MySqlBulkLoader批量插入資料MySql
- 大表資料插入批量提交
- 海量資料處理_批量插入
- SQL語句批量插入資料SQL
- SqlBulkCopy 複製批量插入資料SQL
- NodeJs批量require資料夾中的所有檔案NodeJSUI
- java中批量插入資料jdbc hibernate Mybatis使用方式JavaJDBCMyBatis
- 資料檔案重建,從歸檔日誌中回退資料
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- 把多個資料夾中的檔案批量放到一個資料夾
- Oracle批量插入資料insert all into用法Oracle
- 使用 【Ado.Net】 批量插入資料
- MSSQL資料批量插入優化詳細SQL優化
- 批量插入資料的儲存過程儲存過程
- 使用Python批量重新命名資料夾中的檔案Python
- Laravel 批量插入(如果資料存在刪除原資料)Laravel
- 插入大量資料速度慢的解決方法:批量插入
- Redis批量匯入文字資料Redis
- 檔案插入 Oracle資料庫 Blob型別Oracle資料庫型別
- 如何從redis中匯出資料Redis
- 使用Mybatis批量插入大量資料的實踐MyBatis
- 使用SqlBulkCopy批量插入或遷移資料(轉)SQL
- 移動資料檔案從檔案系統到ASM磁碟組中ASM
- linux下向一個檔案中的某行插入資料的做法Linux
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- python運算元據庫,批量插入資料庫資料Python資料庫
- 插入一個檔案到DB中
- 資料庫批量插入這麼講究的麼?資料庫
- 批量刪除檔案中的^M
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- mongodb資料庫中插入資料MongoDB資料庫