Redis批量寫入
最近測試redis效能,需要批量插入1千萬條以上的資料,
就簡單進行了研究,大概有以下幾種方法:
一:java程式呼叫,簡單的for迴圈,通過Jedis的方法,直接插入,
至於速度,不用看,不用試,根本不行,就不給實現了。
二:通過shell指令碼,也比較簡單,但也是因為要通過port埠的形式,
連線到redis,速度也是慢的不行,放棄。
三:通過redis提供管道,感覺這種方法是最靠譜的,一下是實現:
步驟1:首先簡單寫一個shell指令碼:
for((i=1;i<=1000000;i++)) do echo "set k$i v$i" >> /tmp/_t.txt done
目的是生成一個用批量插入的指令碼檔案,
步驟2:這裡linux或者windows上生成的檔案不能直接當做redis語句來跑,
簡單來說,就是因為linux,windows和dos的換行並不一樣,
所以需要簡單轉換一下:
轉換的方法有好多種:
1:一般Linux發行版中都帶有這個小工具,只能把DOS轉換為UNIX檔案,命令如下:
# unix2dos dosfile.txt
上面的命令會去掉行尾的^M符號。(如果機器上沒有安裝nuix2dos,直接用方法2即可)
2:用vim,vim是vi的改進版本,使用方式:
#vim file.txt
:set fileformat=dos
::wq
一行命令即可,儲存退出,
步驟3:就是跑指令碼了,通過redis提供的管道--pipe形式,
三步即可,完成redis的批量插入,速度,在2000萬條的情況下,生成指令碼的速度稍慢,插入的速度還在幾分鐘,
速度可以說是非常快了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~