具體實現步驟如下:1.新建一個文字檔案,包含redis命令SETKey0Value0SETKey1Value1SETKeyNValueN如果有了原始資料,其實構造這個檔案並不難,譬如shell,python都可以2.將這些命令轉化成RedisProtocol。因為Redis管道功能支援的是RedisProtocol,而不是直接的Redis命令。如何轉化,可參考後面的指令碼。3.利用管道插入catdata.txt|redis-cli--pipeShellVSRedispipe下面透過測試來具體看看Shell批次匯入和Redispipe之間的效率。測試思路:分別透過shell指令碼和Redispipe向資料庫中插入10萬相同資料,檢視各自所花費的時間。Shell指令碼如下:#!/bin/bashfor((i=0;i>redis.logdone每次插入的值都是helloworld,但鍵不同,name0,name1name99999。RedispipeRedispipe會稍微麻煩一點1>首先構造redis命令的文字檔案在這裡,我選用了python#!/usr/bin/pythonforiinrange(100000):print"setname"+str(i),"helloworld"#python1.py>redis_commands.txt#head-2redis_commands.txtsetname0helloworldsetname1helloworld2>將這些命令轉化成RedisProtocol在這裡,我利用了github上一個shell指令碼,#!/bin/bashwhilereadCMD;do#eachcommandbeginswith*{numberargumentsincommand}\r\nXS=($CMD);printf"*${#XS[@]}\r\n"#foreachargument,weappend${length}\r\n{argument}\r\nforXin$CMD;doprintf"\$${#X}\r\n$X\r\n";donedoneredis_data.txt#head-7redis_data.txt*3$3set$5name0$10helloworld至此,資料構造完畢。測試結果
具體實現步驟如下:1.新建一個文字檔案,包含redis命令SETKey0Value0SETKey1Value1SETKeyNValueN如果有了原始資料,其實構造這個檔案並不難,譬如shell,python都可以2.將這些命令轉化成RedisProtocol。因為Redis管道功能支援的是RedisProtocol,而不是直接的Redis命令。如何轉化,可參考後面的指令碼。3.利用管道插入catdata.txt|redis-cli--pipeShellVSRedispipe下面透過測試來具體看看Shell批次匯入和Redispipe之間的效率。測試思路:分別透過shell指令碼和Redispipe向資料庫中插入10萬相同資料,檢視各自所花費的時間。Shell指令碼如下:#!/bin/bashfor((i=0;i>redis.logdone每次插入的值都是helloworld,但鍵不同,name0,name1name99999。RedispipeRedispipe會稍微麻煩一點1>首先構造redis命令的文字檔案在這裡,我選用了python#!/usr/bin/pythonforiinrange(100000):print"setname"+str(i),"helloworld"#python1.py>redis_commands.txt#head-2redis_commands.txtsetname0helloworldsetname1helloworld2>將這些命令轉化成RedisProtocol在這裡,我利用了github上一個shell指令碼,#!/bin/bashwhilereadCMD;do#eachcommandbeginswith*{numberargumentsincommand}\r\nXS=($CMD);printf"*${#XS[@]}\r\n"#foreachargument,weappend${length}\r\n{argument}\r\nforXin$CMD;doprintf"\$${#X}\r\n$X\r\n";donedoneredis_data.txt#head-7redis_data.txt*3$3set$5name0$10helloworld至此,資料構造完畢。測試結果