1. 程式人生 > >Redis批量寫入

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形式,

              cat redisTest.txt | redis-cli -h reids.aliyuncs.com -p 6379 -a xxxx --pipe

三步即可,完成redis的批量插入,速度,在2000萬條的情況下,生成指令碼的速度稍慢,插入的速度還在幾分鐘,

速度可以說是非常快了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~