redis-pipeline

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節點上
相關文章
相關標籤/搜索