管道並不是redis本身提供的功能,通常是客戶端提供的功能;
管道就是打包多條無關命令批量執行,以減少多個命令分別執行消耗的網路互動時間(tcp網路互動),可以顯著提公升redis的效能;
管道使用的
場景
並不適用於,必須知道每次互動結果的場景或者當前的執行依賴於上一次的執行結果等等,相反的,比較適用於對於可靠性不高,允許一定程度的失敗,並且不需要立即得到執行的反饋,比如**簡訊服務;
需要注意的是,如果以管道處理的形式傳送大批的命令,那麼redis必須將這些命令都執行完儲存在記憶體中,也就是說,並不是批量的命令個數越多越好,否則會造成資源的浪費;
# -*- coding: utf-8 -*-todo: 以後補充# @time : 2019/4/13 5:28 am
# @author : george
# @file : pipeline.py
# @contact : [email protected]
from
redis
import
strictredis
import
time
conn = strictredis()
cache_key_list = ['testing_pipeline_%s'
fori
inrange(10)]
count = 10000
num_list = [num
fornum
inrange(count)]
# 遍歷加入
start_time1 = time.time()
forcache_key
incache_key_list:
fornum
innum_list:
conn.sadd(cache_key, num)
end_time1 = time.time()
% (end_time1
-start_time1)
# 命令一次性加入
start_time2 = time.time()
forcache_key
incache_key_list:
conn.sadd(cache_key, *
num_list)
end_time2 = time.time()
% (end_time2
-start_time2)
# 管道加入
start_time3 = time.time()
pipe = conn.pipeline(transaction=false)
forcache_key
incache_key_list:
pipe.sadd(cache_key, *
num_list)
pipe.execute()
end_time3 = time.time()
% (end_time3
-start_time3)
# 執行結果
Linux常用命令三和管道理解
pwd 顯示結果 剛剛所處的路徑 顯示路徑 touch 建立乙個檔案 touch 1.txt,可以帶字尾也可以不帶如果建立檔案時,以.開頭建立則建立出來的為隱藏文 mkdir 建立乙個資料夾 mkdir a b c d e p 依賴的檔案先建立 即a下邊建立b,b下邊建立c.但是b不存在,就先建立b...
redis管道例子
管道好處 假 設不會因為tcp 報文過長而被拆分。可能兩個tcp報文就能完成四條命令,client可以將四個incr命令放到乙個tcp報文一起傳送,server則可以將四條命令 的處理結果放到乙個tcp報文返回。通過pipeline方式當有大批量的操作時候。我們可以節省很多原來浪費在網路延遲的時間。...
Redis管道傳輸
redis是乙個tcp 伺服器,並支援請求 響應協議。redis的乙個請求完成需要下面的步驟 管道的基本含義是,客戶端可以傳送多個請求給伺服器,而無需等待答覆所有,並最後讀取在單個步驟中的答應。要檢查redis的管道,只要開始redis的例項,然後在終端鍵入以下命令。echo en ping r n...