码迷,mamicode.com
首页 > 其他好文 > 详细

Redis管道

时间:2018-07-28 13:55:31      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:客户端   执行   scripting   https   上下   了解   section   原因   服务端   

介绍

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。客户端请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应并将结果返回给客户端。(补:阻塞?上一条请求结果没回来,就无法进行下一条请求。)

客户端和服务器通过网络传输数据,一次请求响应时间单位时间称为RTT(往返时间)。如果客户端连续发出多个请求,是有性能影响的,即使服务处理得再快,RTT传输也大大影响响应的快慢(补:类比网购,发货很快,快递运输很慢)因此需要管道技术(pipeline)

管道技术使得客户端即使没有读取旧的响应,也可以将多个请求发送到服务器,而无需等待回复,最后只需一步一步地读取应答。

代码

import  redis

r = redis.StrictRedis(host=‘localhost‘,port=6379,db=0)
# r.set(‘foo‘,‘bar‘)
# print(r.get(‘foo‘))

pipeline = r.pipeline(transaction=False)
pipeline.incr(‘a‘)
pipeline.incr(‘b‘)
pipeline.incr(‘c‘)
pipeline.incr(‘d‘)
pipeline.execute()


print(r.get(‘a‘),‘ ‘,r.get(‘b‘),r.get(‘c‘),‘ ‘,r.get(‘d‘))

 结果

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
runfile(‘E:/舒碧/项目/Redis_pipeline/redis_pipline.py‘, wdir=‘E:/舒碧/项目/Redis_pipeline‘)
b‘6‘ b‘6‘ b‘6‘ b‘6‘

 

由于电脑环境原因、目前只能进行简单测试。

深入了解

开发管道技术原因:

  • 降低RTT的延迟成本(补:服务器明明可以处理更多,就是因为传输慢导致的请求少)
  • 改进Redis服务器上每秒执行的总操作数。为什么能改进呢?
    1、在不使用流水线操作的情况下,服务器read()和write()的系统调用过程中,上下文切换是很耗性能的。
    2、当使用管道时,通常单个read()系统调用可以读取许多命令,并通过单个write()系统调用递送多个回复。


 官网的Pipelining VS Scripting???待学习~

 参考链接:https://redis.io/topics/pipelining

Redis管道

标签:客户端   执行   scripting   https   上下   了解   section   原因   服务端   

原文地址:https://www.cnblogs.com/bibi-feiniaoyuan/p/9381484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!