為啥Redis使用pipelining會(huì)更快
為啥Redis使用pipelining會(huì)更快?
這是一個(gè)很考究細(xì)節(jié)的問(wèn)題,大部分人都會(huì)說(shuō):因?yàn)闇p少了網(wǎng)絡(luò)開(kāi)銷,那么,看如下例子:
import time
import redis
client = redis.Redis(decode_responses=True)
count = 10000
def no_pipelining():
for i in range(count):
client.set("test:nopp:{}".format(i), i, ex=100)
def with_pipelining():
pp = client.pipeline()
for i in range(count):
pp.set("test:withpp:{}".format(i), i, ex=100)
pp.execute()
if __name__ == "__main__":
start = time.time()
no_pipelining()
mid = time.time()
with_pipelining()
end = time.time()
print("no_pipelining: {} seconds; with_pipelining: {} seconds".format(mid - start, end - mid))
為什么執(zhí)行結(jié)果相差如此之大呢?
$ python test.py no_pipelining: 2.3809118270874023 seconds; with_pipelining: 0.4370129108428955 seconds
因?yàn)檫@是連接本地的redis,所以網(wǎng)絡(luò)開(kāi)銷非常小,當(dāng)然,這里仍然有一部分是網(wǎng)絡(luò)開(kāi)銷影響,可是除此之外是否還有其它影響因素呢? 答案是有,比如OS進(jìn)程調(diào)度,當(dāng)不使用管道時(shí),Redis處理每個(gè)命令之間是有時(shí)間空隙的,因此OS很有可能會(huì)將Redis進(jìn)程轉(zhuǎn)換為sleep狀態(tài), 然后運(yùn)行其它程序,而使用pipelining時(shí),可以提高CPU利用率,Redis空閑的時(shí)間沒(méi)有那么多,因此,這也是pipelining速度會(huì)更快的 重要原因之一。
ref:
https://redis.io/topics/pipelining
到此這篇關(guān)于為啥Redis使用pipelining會(huì)更快的文章就介紹到這了,更多相關(guān)Redis使用pipelining快內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析Redis?切片集群的數(shù)據(jù)傾斜問(wèn)題
如果?Redis?中的部署,采用的是切片集群,數(shù)據(jù)是會(huì)按照一定的規(guī)則分散到不同的實(shí)例中保存,比如,使用?Redis?Cluster?或?Codis,這篇文章主要介紹了Redis?切片集群的數(shù)據(jù)傾斜分析,需要的朋友可以參考下2022-06-06
CentOS Linux系統(tǒng)下安裝Redis過(guò)程和配置參數(shù)說(shuō)明
這篇文章主要介紹了CentOS Linux系統(tǒng)下安裝Redis過(guò)程和配置參數(shù)說(shuō)明,需要的朋友可以參考下2014-10-10
使用攔截器+Redis實(shí)現(xiàn)接口冪思路詳解
這篇文章主要介紹了使用攔截器+Redis實(shí)現(xiàn)接口冪等,接口冪等有很多種實(shí)現(xiàn)方式,攔截器/AOP+Redis,攔截器/AOP+本地緩存等等,本文講解一下通過(guò)攔截器+Redis實(shí)現(xiàn)冪等的方式,需要的朋友可以參考下2023-08-08
SpringSession+Redis實(shí)現(xiàn)集群會(huì)話共享的方法
為了保證WEB應(yīng)用的承載能力, 需要對(duì)WEB應(yīng)用進(jìn)行集群處理.這篇文章主要介紹了SpringSession+Redis實(shí)現(xiàn)集群會(huì)話共享的方法,需要的朋友參考下吧2018-08-08
Redis序列化存儲(chǔ)及日期格式的問(wèn)題處理
這篇文章主要介紹了Redis序列化存儲(chǔ)及其日期格式的問(wèn)題處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot整合Mybatis-plus和Redis實(shí)現(xiàn)投票功能
投票功能是一個(gè)非常常見(jiàn)的Web應(yīng)用場(chǎng)景,這篇文章將為大家介紹一下如何將Redis和Mybatis-plus整合到SpringBoot中,實(shí)現(xiàn)投票功能,感興趣的可以了解一下2023-05-05

