redis之管道应用场景及源码分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis之管道应用场景及源码分析相关的知识,希望对你有一定的参考价值。

参考技术A 我们都知道,redis的通信是建立在tcp基础上的,也就是说每一次命令(get、set)都需要经过tcp三次握手,而且redis一般都是部署在局域网内,网络开销非常小,针对频次较低的操作,网络开销都是可以忽略的。

在redis通信基础中 我已经讲到了。每一次操作redis的时候我们都需要和服务端建立连接,针对量小的情况下网络延迟都是可以忽略的,但是针对大批量的业务,就会产生雪崩效应。假如一次操作耗时2ms,理论上100万次操作就会有2ms*100万ms延迟,中间加上服务器处理开销,耗时可能更多.对应客户端来讲,这种长时间的耗时是不能接受的。所以为了解决这个问题,redis的管道pipeline就派上用场了。 恰好公司的对账业务使用了redis的sdiff功能,数据量比较大,刚开始没有pipeline导致延迟非常严重。后来wireshark抓包分析原因确实发现不停的建立tcp连接(发送数据,接收数据)。使用pipeline后性能大幅度提升。

可想而知,使用pipeline的性能要比不使用管道快很多倍。

本文就先到这里了。。。

Redis常用数据类型及应用场景之String

 

这里提一点,如果要存对象到redis里的话,有两种可以考虑的实现方案

1,用set,也即将对象转换为一个json,然后存到一个key里

2,用Mset,也即将对象中的每一个属性,单独Set到Redis里,每个属性的key用id:属性名来标识

这两种方式,从效率上讲,第二种要高很多

 

 

 

 

 

 

以上是关于redis之管道应用场景及源码分析的主要内容,如果未能解决你的问题,请参考以下文章

Redis常用数据类型及应用场景之ZSet

redis 六. list应用场景及底层分析

redis 三. hash应用场景及底层分析

Redis常用数据类型及应用场景之Set

Redis常用数据类型及应用场景之String

轻松搞定高并发:详解Redis的五种数据类型及应用场景分析!