Redis Pipelining
能夠實現請求/響應服務器,以便即便客戶端還沒有讀取舊響應,它也可以處理新請求。這樣就能夠將多個命令發送到服務器而無需等待回覆,最後只需一步便可讀取回復。python
這被稱爲流水線技術,而且是幾十年來普遍使用的技術。例如,許多POP3協議實現已經支持此功能,大大加快了從服務器下載新電子郵件的過程。redis
Redis從很早就開始支持流水線操做,所以不管您運行什麼版本,均可以使用Redis進行流水線操做
單條指令:
bash
多條指令
服務器
流水線技術不單單是爲了減小因爲往返時間而致使的延遲成本的一種方式,它實際上大大提升了您在給定Redis服務器中每秒可執行的總操做量code
原始:blog
def raw(): start = time.time() for x in range(100): redis.lpush("user:xx:message", 'message:%s'%x) redis.rpush('user:yy:message','haha%s'%x) end = time.time() print('耗時%0.2fs' % (end - start)) #耗時8.35s
使用pipeline:圖片
def PipeLine(): with redis.pipeline() as p: start = time.time() for x in range(100): p.lpush("user:xx:message", 'message:%s' % x).rpush('user:yy:message','haha%s'%x) end = time.time() print('耗時%0.2fs' % (end - start)) #耗時 0.25s
建議:ip
1. 注意每次pipeline攜帶的數據量 2. pipeline每次只能做用在一個Redis節點上