为啥Redis使用pipelining会更快
为啥Redis使用pipelining会更快?
这是一个很考究细节的问题,大部分人都会说:因为减少了网络开销,那么,看如下例子:
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))
为什么执行结果相差如此之大呢?
$ python test.py no_pipelining: 2.3809118270874023 seconds; with_pipelining: 0.4370129108428955 seconds
因为这是连接本地的redis,所以网络开销非常小,当然,这里仍然有一部分是网络开销影响,可是除此之外是否还有其它影响因素呢? 答案是有,比如OS进程调度,当不使用管道时,Redis处理每个命令之间是有时间空隙的,因此OS很有可能会将Redis进程转换为sleep状态, 然后运行其它程序,而使用pipelining时,可以提高CPU利用率,Redis空闲的时间没有那么多,因此,这也是pipelining速度会更快的 重要原因之一。
ref:
https://redis.io/topics/pipelining
到此这篇关于为啥Redis使用pipelining会更快的文章就介绍到这了,更多相关Redis使用pipelining快内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
CentOS Linux系统下安装Redis过程和配置参数说明
这篇文章主要介绍了CentOS Linux系统下安装Redis过程和配置参数说明,需要的朋友可以参考下2014-10-10
SpringSession+Redis实现集群会话共享的方法
为了保证WEB应用的承载能力, 需要对WEB应用进行集群处理.这篇文章主要介绍了SpringSession+Redis实现集群会话共享的方法,需要的朋友参考下吧2018-08-08
SpringBoot整合Mybatis-plus和Redis实现投票功能
投票功能是一个非常常见的Web应用场景,这篇文章将为大家介绍一下如何将Redis和Mybatis-plus整合到SpringBoot中,实现投票功能,感兴趣的可以了解一下2023-05-05


最新评论