2014-04-16 28 views
1

我有幾個按鍵設置實時值。既然是說管道是更快,是不是真的適合跑Redis管道適合實時獲取設置?

r= redis.StrictRedis() 
pipe = r.pipeline() 
for i in range(100000): 
    pipe.set(i, i+1).execute() 

有1個十萬鍵和值變化的每一秒。我需要運行execute(),因爲我也會實時並行地檢索數據。

就性能和CPU負載而言,在這種情況下使用管道是否合適?

回答

1

您正在調用每次迭代的執行。所以你根本沒有使用管道,只是增加了開銷。

如果您對每5000個項目捆綁的execute()進行批處理(例如),那麼這是合適且速度非常快的。

請記住,StrictRedis.pipeline不是真正的管線。它是一個客戶端隊列,它在execute()處使用服務器端的管道接口。如果感興趣,請參閱here

希望這會有所幫助,TW

+0

我同意。因此流水線適合分批執行,而不適用於流式數據。 – user3446151

+0

是的,使用當前的redis-py管道實現,它是快速批處理,但不是流式處理。其他redis客戶端實現可能會提供真正的流媒體,但是Python中還沒有其他的存在(據我所知)。 –