首页 存档 技术 查看内容

.NET 客户端实现 Redis 中的管道(PipeLine)与事物(Transactions) StackExchange.R ...

2018-3-30 13:00 |来自: 互联网 330 0

摘要: (点击上方蓝字,可快速关注我们) 来源:张龙豪 cnblogs.com/knowledgesea/p/6552799.html 序言 Redis中的管道(PipeLine)特性:简述一下就是,Redis如何从客户端一次发送多个命令,服务端到客户端如何一次性响 ...

(点击上方蓝字,可快速关注我们)


来源:张龙豪

cnblogs.com/knowledgesea/p/6552799.html


序言


Redis中的管道(PipeLine)特性:简述一下就是,Redis如何从客户端一次发送多个命令,服务端到客户端如何一次性响应多个命令。


Redis使用的是客户端-服务器模型和请求/响应协议的TCP服务器,这就意味着一个请求要有以下步骤才能完成:1、客户端向服务器发送查询命令,然后通常以阻塞的方式等待服务器相应。2、服务器处理查询命令,并将相应发送回客户端。这样便会通过网络连接,如果是本地回环接口那么就能特别迅速的响应,但是如果走外网,甚至外网再做一系列的层层转发,那就显的格外蛋疼。


无论网络延时是多少,那么都将占用整体响应的时间。这样一来如果一次发送1个命令,网络延时为100ms,我们不得不做。那么如果1次发1000个命令,那么网络延时100*1000ms就很难容忍啦。


针对与上面的问题,Redis在2.6版本以后就都提供啦管道(Pipeline)功能。他可以使客户端在没有读取旧的响应时,处理新的请求。这样便可以向服务器发送多个命令,而不必等待答复,直到最后一个步骤中读取答复。这被称为管线(PipeLine),并且是几十年来广泛使用的技术。例如,许多POP3协议实现已经支持此功能,大大加快了从服务器下载新电子邮件的过程。


那么事务这个词汇,经常遇到,就不多唧唧啦,目标要一致就好,便是一组操作怎么做成原子性操作,使他去不了终点,回到原点。


简述wireshark抓包工具


为啦让大家对管线有更形象的感观,这一节我们先说说Wireshark抓包工具,他会让你看到客户端到服务器通过tcp协议发送的redis命令的过程与详细。


wireshark能够扑捉到系统发送和接受的每一个报文,我们这里只做一些过滤的简述。下图就是他的样子,你打开后可以可以摸索下他的用法。



简述几个过滤规则:


1、ip过滤:目标ip过滤:ip.dst==172.18.8.11,源ip地址过滤:ip.src==192.168.1.12;


2、端口过滤:tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80只过滤目的端口为80的,tcp.srcport==80只过滤源端口为80的包;


3、协议过滤:直接在fiter框中输入协议名称即可,如:http,tcp,udp,...


4、http模式过滤:过滤get包,http.request.method=="GET",过滤post包,http.request.method=="POST";


5、如果使用多条件过滤,则需要加连接符号,and。比如 ip.src==192.168.1.12 andhttp.request.method=="POST" andtcp.srcport==80


StackExchange.Redis实现Redis管线(Pipeline)


上两张图片管线便一目了然啦。


客户端对redis服务器进行多次请求的话,一般普通模式是这样子的



客户端对redis服务器进行多次请求的话,管道模式是这样子的



一般模式我们上代码:


public static void GetNoPipelining()

{

for (var i = 0; i

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部