redis-pipeline


Redis Pipelining
可以實現請求/響應服務器,以便即使客戶端尚未讀取舊響應,它也能夠處理新請求。這樣就可以將多個命令發送到服務器而無需等待回復,最后只需一步即可讀取回復。

這被稱為流水線技術,並且是幾十年來廣泛使用的技術。例如,許多POP3協議實現已經支持此功能,大大加快了從服務器下載新電子郵件的過程。

Redis從很早就開始支持流水線操作,因此無論您運行什么版本,都可以使用Redis進行流水線操作
單條指令:
在這里插入圖片描述

多條指令

在這里插入圖片描述

流水線技術不僅僅是為了減少由於往返時間而導致的延遲成本的一種方式,它實際上大大提高了您在給定Redis服務器中每秒可執行的總操作量

在這里插入圖片描述
在這里插入圖片描述
原始:

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

建議:

1. 注意每次pipeline攜帶的數據量
2. pipeline每次只能作用在一個Redis節點上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM