客戶端和
redis
使用tcp
協議連線。不論是客戶端向
redis
傳送命令還是
redis
向客戶端返回命令的執行結果,都需要經過網路傳輸,這兩部分的總耗時稱為往返時延。在執行多個命令時每條命令都需要等待上一條命令執行完才能執行,即使命令不需要上一條命令的執行結果。
redis
的底層通訊協議對管道(
pipelining
)提供了支援。通過管道可以一次性傳送多條命令並在執行完後一次性將結果返回,當一組命令中每條命令都不依賴於之前命令的執行結果時就可以將這組命令一起通過管道發出。管道通過減少客戶端與redis
的通訊次數來實現降低往返時延累計值得目的
。
redis
在2.6
版推出了指令碼功能,允許開發者使用
lua語言編寫指令碼傳到
redis
中執行,指令碼中可以呼叫大部分的
redis
命令。使用指令碼的好處如下:
1.減少網路開銷;多個命令可以放到指令碼中傳送乙個請求即可,減少網路往返時延。
2.原子操作;整個指令碼將作為乙個整體執行,中間不會被其他命令插入。
3.復用;指令碼會永久儲存在
redis
中,其他客戶端也可以復用。
lua是乙個高效的輕量級指令碼語言。
lua在葡萄牙語種是「月亮」的意思,它的徽標形似衛星,寓意著
lua是乙個「衛星語音」,能夠方便的嵌入到其他語言中使用。
10 實用指令碼
1.1perl perl pi.bak e s aa bb g file p 隱式迴圈遍歷指定的檔案 i.bak i為原位編輯,即直接修改檔案內容,bak是備份成bak字尾的檔案 如果想對特定的檔案進行修改,可以 find name sv xargs perl pi.bak e s aa bb g ...
使用WebSocket與具名管道支援遠端輸入輸出
在專案的beta階段,我們團隊提出了乙個新的內容,就是要為每個使用者提供乙個真正的開啟即用的簡易開發環境。為了真正實現快捷這一亮點,我決定在這個功能的實現上不再使用docker容器技術,從而免去了專案啟動的時間開銷,由此可以大大減少白屏時間。而面臨的乙個問題就是輸入輸出問題,在alpha階段,我們專...
實驗10 Problem D STL 管道二
home web board problemset standing status statistics problem d stl 管道二time limit 1 sec memory limit 128 mb submit 1314 solved 772 submit status web bo...