文章目錄
-
- Redis 管道技術—Pipeline
-
- 普通指令模式
- 管道模式
- 管道技術解決了什麼問題?
- 管道技術需要注意的事項
- 管道使用
Redis 管道技術—Pipeline
管道技術(Pipeline)是用戶端提供的一種批處理技術,用于一次處理多個 Redis 指令,進而提高整個互動的性能。
通常情況下 Redis 是單行執行的,用戶端先向伺服器發送請求,服務端接收并處理請求後再把結果傳回給用戶端,這種處理模式在非頻繁請求時不會有任何問題。
但如果出現集中大批量的請求時,因為每個請求都要經曆先請求再響應的過程,這就會造成網絡資源浪費,此時就需要管道技術來把所有的指令整合一次發給服務端,再一次響應給用戶端,這樣就能大大的提升了 Redis 的響應速度。
普通指令模式
管道模式
管道技術解決了什麼問題?
管道技術解決了多個指令集中請求時造成網絡資源浪費的問題,加快了 Redis 的響應速度,讓 Redis 擁有更高的運作速度。但要注意的一點是,管道技術本質上是用戶端提供的功能,而非 Redis 伺服器端的功能。
管道技術需要注意的事項
管道技術雖然有它的優勢,但在使用時還需注意以下幾個細節:
- 發送的指令數量不會被限制,但輸入緩存區也就是指令的最大存儲體積為 1GB,當發送的指令超過此限制時,指令不會被執行,并且會被 Redis 伺服器端斷開此連結;
- 如果管道的資料過多可能會導緻用戶端的等待時間過長,導緻網絡阻塞;
- 部分用戶端自己本身也有緩存區大小的設定,如果管道指令沒有沒執行或者是執行不完整,可以排查此情況或較少管道内的指令重新嘗試執行。
管道使用
例如:
import redis
r = redis.Stric0redis(host='127.0.0.1',post=6379)
# 建立管道
pl = r.pipeline()
for i in range(100):
pl.set('x - %s' %i,'d - %s' %i)
# 執行
pl.execute()