成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Redis非事務(wù)型流水線

hlcfan / 2352人閱讀

摘要:使用事務(wù)的其中一個好處就是底層的客戶端會通過使用流水線來提高事務(wù)執(zhí)行時的性能。使用非事務(wù)型流水線同樣可以獲得相似的性能提升,并且可以讓用戶同時執(zhí)行多個不同的命令。

使用事務(wù)的其中一個好處就是底層的客戶端會通過使用流水線來提高事務(wù)執(zhí)行時的性能。使用非事務(wù)型流水線(non-transactional pipeline)同樣可以獲得相似的性能提升,并且可以讓用戶同時執(zhí)行多個不同的命令。

MULTI和EXEC也會消耗資源,并且可能會導(dǎo)致其他重要的命令被延遲執(zhí)行。但也可以在不使用MULTI和EXEC的情況下,獲得流水線帶來的所有好處。

pipe = conn.pipeline()

在執(zhí)行pipeline()時傳入True作為參數(shù),或者不傳入任何參數(shù),那么客戶端將使用MULTI和EXEC包裹起用戶要執(zhí)行的所有命令。如果傳入False為參數(shù),那么客戶端同樣會像執(zhí)行事務(wù)那樣收集用戶要執(zhí)行的所有命令,只是不再使用MULTI和EXEC包裹這些命令。如果用戶需要向Redis發(fā)送多個命令,并且對于這些命令來說,一個命令的執(zhí)行結(jié)果并不會影響另一個命令的輸入,而且這些命令也不需要以事務(wù)的方式來執(zhí)行的話,那么我們可以通過向pipeline()方法傳入False來進一步提升Redis的整體性能。

下面是沒有使用非事務(wù)型流水線代碼:

def update_token(conn, token, user, item=None):
    timestamp = time.time()
    conn.hset("login:", token, user)
    conn.zadd("recent:", token, timestamp)
    
    if item:
        conn.zadd("viewed:" + token, item, timestamp)
        conn.zremrangebyrank("viewed:" + token, 0, -26)
        conn.zincrby("viewed:", item, -1)
        

使用非實物型流水線后:

def update_token_pipeline(conn, token, uesr, item=None)
    timestamp = time.time()
    pipe = conn.pipeline(False)
    pipe.hset("login:", token, user)
    pipe.zadd("recent:", token, timestamp)
    
    if itme:
        pipe.zadd("viewed:" + token, item, timestamp)
        pipe.zremrangebyrank("viewed:" + token, 0, -26)
        pipe.zincrby("viewed:", item, -1)
    pipe.execute()

根據(jù)測試,高延遲網(wǎng)絡(luò)使用流水線時的速度要比不使用流水線時的速度快5倍,低延遲網(wǎng)絡(luò)使用流水線也可以帶來接近4倍的速度提升,本地網(wǎng)絡(luò)的測試結(jié)果實際上已經(jīng)達到Python在單核環(huán)境使用redis協(xié)議發(fā)送和接收短命令序列的性能極限。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44554.html

相關(guān)文章

  • Python--Redis實戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第8節(jié):關(guān)于性能方面的注意事項

    摘要:上一篇文章實戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)非事務(wù)型流水線下一篇文章實戰(zhàn)第五章使用構(gòu)建支持程序第節(jié)使用來記錄日志 上一篇文章:Python--Redis實戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第7節(jié):非事務(wù)型流水線下一篇文章:Python--Redis實戰(zhàn):第五章:使用Redis構(gòu)建支持程序:第1節(jié):使用Redis來記錄日志 習(xí)慣了關(guān)系數(shù)據(jù)庫的用戶在剛開始使用Redis的時候,通常會因為Re...

    neu 評論0 收藏0
  • Python--Redis實戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第6節(jié):Redis事務(wù)

    摘要:上一篇文章實戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)處理系統(tǒng)故障下一篇文章實戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)非事務(wù)型流水線為了確保數(shù)據(jù)的正確性,我們必須認(rèn)識到這一點在多個客戶端同時處理相同的數(shù)據(jù)時,不謹(jǐn)慎的操作很容易會導(dǎo)致數(shù)據(jù)出錯。 上一篇文章:Python--Redis實戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第5節(jié):處理系統(tǒng)故障下一篇文章:Python--Redis實戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第...

    banana_pi 評論0 收藏0

發(fā)表評論

0條評論

hlcfan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<