redis pipe管道

redis pipe管道redis

redis命令在從提交到返回處理結果的過程當中,消耗的時間咱們稱之爲RTT(往返時間)。緩存

在須要批量執行redis 命令的場景下,若是命令單條逐個執行,那麼總共花費的時間是命令條數 N * RTT。服務器

redis 提供了管道技術來提升批量執行效率,即將多個命令打包發送給redis服務端,全部命令執行完後,再將全部結果打包返回。ide

在全部命令執行結束前,redis服務器會緩存已執行結束的結果。spa

在redis-cli命令行中,命令行

使用redis管道技術時,咱們一般將待執行的命令放到一個文本里,好比commands.txt,而後使用命令:unix

cat commands.txt | redis-cli --pipeorm

去讀取文本里的命令,而後打包已pipe管道的方式發送給redis服務端。ip

若是命令須要帶參數,咱們能夠根據redis官方提供的命令協議格式:it

*<number of arguments> CR LF

$<number of bytes of argument 1> CR LF

<argument data> CR LF

...

$<number of bytes of argument N> CR LF

<argument data> CR LF

額,上面這段是否是很煩?是的,其實沒有這麼複雜,你能夠直接將多個redis命令寫到一個文件commands.txt裏,記住是每一個命令佔一行。

而後執行:cat commands.txt |redis-cli --pipe

以管道方式執行。

你覺得就萬事大吉了?no!你極可能會遇到這個錯誤:

ERR unknown command 'et'

即執行了第一條命令,剩下的都報錯了。緣由是redis-cli中只支持dos格式的換行符 \r\n ,所以你須要對文件進行轉碼:unix2dos commands.txt

而後再執行上面的命令。


附:安裝unix2dos:

macOS: 

brew install unix2dos -y

相關文章
相關標籤/搜索