1. 程式人生 > >redis-cli 通過管道 --pipe 快速匯入資料到redis中

redis-cli 通過管道 --pipe 快速匯入資料到redis中

最近有個需求,需要把五千萬條資料批量寫入redis中,方法倒是有很多種!效率最高的就是通過redis-cl管道的方式寫入

一:先看看命令

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

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

二:redis.txt 的 檔案格式

2.1 redis.txt的格式一

有兩種檔案格式 都是可以的

eg: set yutes testsss

*3

$3

set

$5

yutes

$7

testsss

*3

$3

set

$3

ymy

$9

testvalue

解釋:

eg:

*3 表示有三個字元

$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

可以參考連結 https://www.cnblogs.com/webnote/p/5767853.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 的雜湊值 區分槽點,通過節點拿到槽點。

瀋陽生殖器皰疹醫院:http://www.sdjk99.com/

瀋陽性病醫院:http://yiyuan.120ask.com/syxb/