redis-cli 經過管道 --pipe 快速導入數據到redis中

最近有個需求,須要把五千萬條數據批量寫入redis中,方法卻是有不少種!效率最高的就是經過redis-cl管道的方式寫入html

一:先看看命令web

cat redis.txt | redis-cli -h 127.0.0.1 -a password - p 6379 --pipe

結構很簡單 redis.txt 是你的文件名稱 後面是你的客戶端redis

二:redis.txt 的 文件格式ubuntu

2.1 redis.txt的格式一vim

有兩種文件格式 都是能夠的app

eg:  set yutes testsssionic

*3
$3
set
$5
yutes
$7
testsss

*3
$3
set
$3
ymy
$9
testvalue

解釋:spa

eg:.net

*3 表示有三個字符  3d

$3 表示 set字符長度爲3 也就是咱們的命令

$5表示 yutes的長度爲5 也就是咱們的key

$7表示 testsss的長度爲7 也就是咱們的value

不一樣的字符直接 須要用換行隔開 例如緊接着下一個是  set ymy testvalue

另一種方式 就比較簡單直觀

2.2 redis.txt的格式二

set yutes testsss
set ymy testvalue

把須要的本身這樣寫就行

三:文件格式轉碼

unix2dos  redis.txt 

 上面的命令會去掉行尾的^M符號

四:執行命令就能夠了 如圖

 

四:總結

導入3250萬數據大概用了 1分30秒左右

而這種方式 用了30多分鐘!

 

 

遇到的坑

1: 沒有 unix2dos 命令

apt install  unix2dos  沒有成功 提示 找不到 unix2dos pkg

更新 apt ,sudo apt update  ,可是仍然找不到  unix2dos 

添加 apt的源

vim /etc/apt/sources.list  

能夠參考連接 http://www.javashuo.com/article/p-cebtxnpl-ee.html

個人list爲:

deb http://archive.ubuntu.com/ubuntu bionic main
           deb http://archive.ubuntu.com/ubuntu bionic-security main
           deb http://archive.ubuntu.com/ubuntu bionic-updates main
           deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

而後在從新sudo apt update 在  apt install unix2dos 或者 sudo apt-get install tofrodos 

2: 上面的文件格式轉碼是

是 unix2dos filename 而不是 dos2unix filename

3: 集羣模式下 如何寫入

若是不經過 pipe 咱們能夠經過 redis-cli -c 來啓動redis集羣模式 

cat redis.txt | redis-cli -c -h 127.0.0.1 -a password - p 6379

可是經過 --pipe 來啓動集羣模式的話 會 提示 MOVEN *** 172.20.**** 錯誤

那麼解決方案有兩種

一:暴力型的

你在集羣模式下 --pipe 你會發現 key值的redis槽點在 此節點上 就寫入成功了 不在此節點 就沒有寫入成功

那咱們能夠把每一個節點跑 --pipe 一次,那麼每一個節點 就會寫入本身的數據

二:細緻型

經過key 的哈希值 區分槽點,經過節點拿到槽點,,嗯嗯  有點麻煩!詳細看連接

能夠參考連接:https://blog.csdn.net/kevin_pso/article/details/53945053

參考文檔:https://blog.csdn.net/u014078154/article/details/79316430

相關文章
相關標籤/搜索