Redis管道
介绍
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管道的更多相关文章
- Redis 管道技术
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响 ...
- Redis管道功能
Redis管道,Redis存储用户浏览数据 当频繁的存储获取Redis数据库中的数据时,可以使用Redis的pipeline(管道)功能,将多个相互没有依赖关系的读写操作,如:下一步执行的Redis操 ...
- Redis管道理解
Redis管道理解 简介 管道并不是Redis本身提供的功能,通常是客户端提供的功能: 管道就是打包多条无关命令批量执行,以减少多个命令分别执行消耗的网络交互时间(TCP网络交互),可以显著提升Red ...
- redis管道技术
1.redis管道pipeline解决的问题: 由于redis通信是通过tcp协议基础,并且是堵塞的处理方式,在第一个请求没有执行并返回前,无法处理第二个请求.所以事件浪费在了网络传输和堵塞请求中. ...
- redis学习(六)redis管道
redis管道 1.redis管道介绍 redis采用的是CS架构,客户端与服务器端通过tcp协议进行连接通信,因此无论是发出请求还是接收响应,都必须经过网络传输.在tcp连接过程中,客户端和服务器端 ...
- 缓存数据库-redis(管道)
一:Redis 管道技术 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常 ...
- Redis 管道pipeline
Redis是一个cs模式的tcp server,使用和http类似的请求响应协议. 一个client可以通过一个socket连接发起多个请求命令. 每个请求命令发出后client通常会阻塞并等待red ...
- 使用Redis管道提升性能
首发于 樊浩柏科学院 Redis 的 管道 (pipelining)是用来打包多条无关命令批量执行,以减少多个命令分别执行带来的网络交互时间.在一些批量操作数据的场景,使用管道可以显著提升 Redis ...
- redis管道操作(事务),无回滚
管道:将数据操作放在内存中,只有成功后,才会一次性全部放入redis #管道(事务),要是都成功则成功,失败一个全部失败 #原理:将数据操作放在内存中,只有成功后,才会一次性全部放入redis pip ...
- 5. redis管道, 发布订阅, 模拟队列
一. 发布订阅 #订阅scribe 127.0.0.1:6379> SUBSCRIBE "channel_1" Reading messages... (press Ctrl ...
随机推荐
- Git+Github入门
1.安装Git git 返回上一级文件命令 cd ..(cd 和..之间有空格) 2.安装完成后需进一步设置,在命令行输入 3.选择一个合适的地方创建一个空目录 pwd命令用于显示当前目录 4.通过g ...
- 搭建repo服务器和上传源码
https://blog.csdn.net/qq_28449863/article/details/79992191 https://blog.csdn.net/qq_28449863/article ...
- php,单引号与双引号的区别
代码示例 <?php $s='666'; $s2="999"; $test = 'name{$s} - {$s2}'; $test2 = "name{$s} - { ...
- form表单数据进行json转换
$.fn.serializeJson = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { ...
- 【repost】前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
目录(?)[+] 前端这几年的技术发展很快,细分下来,主要可以分成四个方面: 1.开发语言技术,主要是ES6&7,coffeescript,typescript等: 2.开发框架,如Ang ...
- yii2.0 点击验证码图片不刷新
修改vender\yiisoft\yii2\captcha\CaptchaAction下的run方法 public function run(){ if (Yii::$app->request- ...
- web安全基础
web安全备忘 主机系统安全防护:防火墙控制 Web是一个分布式系统,一个站点多个主机布置,一主机布置多个站点:并发,异步,同步 主机安全配置文件修改与强化 web站点数据验证逻辑的常用技巧:功能性代 ...
- 查看服务器tcp连接及服务器并发
一.查看哪些IP连接本机netstat -an二.查看TCP连接数1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ...
- 简单的Poc Exp编写(上)
简单的POC EXP 编写 (上) 作者BY Greekn 今天主要讲的 是关于web 方面的 poc 编写 关于web 安全 个人理解的话 一个就是攻击 另一个就是漏洞挖掘了 防御的话 看 ...
- bootstrap使用之多个弹窗和拖动效果[开发篇]
有时开发一些特效,自己感觉挺爽的,像操作自己电脑一样操作你的网页,这里就介绍一个使用bootstrap的一点多窗口和拖动效果吧! 这里,我们不使用静态打开的的方式,low...,1.添加一个a链接 触 ...