天天看點

Redis 管道技術—Pipeline,python互動中的使用

文章目錄

    • Redis 管道技術—Pipeline
      • 普通指令模式
      • 管道模式
    • 管道技術解決了什麼問題?
    • 管道技術需要注意的事項
    • 管道使用

Redis 管道技術—Pipeline

管道技術(Pipeline)是用戶端提供的一種批處理技術,用于一次處理多個 Redis 指令,進而提高整個互動的性能。

通常情況下 Redis 是單行執行的,用戶端先向伺服器發送請求,服務端接收并處理請求後再把結果傳回給用戶端,這種處理模式在非頻繁請求時不會有任何問題。

但如果出現集中大批量的請求時,因為每個請求都要經曆先請求再響應的過程,這就會造成網絡資源浪費,此時就需要管道技術來把所有的指令整合一次發給服務端,再一次響應給用戶端,這樣就能大大的提升了 Redis 的響應速度。

普通指令模式

Redis 管道技術—Pipeline,python互動中的使用

管道模式

Redis 管道技術—Pipeline,python互動中的使用

管道技術解決了什麼問題?

管道技術解決了多個指令集中請求時造成網絡資源浪費的問題,加快了 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()