SpringBoot项目中Redis之管道技术

发布时间:2025-05-15 11:39:58 作者:益华网络 来源:undefined 浏览量(2) 点赞(2)
摘要:环境:springboot2.3.9.RELEASE + redis3.2.100 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将

环境:springboot2.3.9.RELEASE + redis3.2.100

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:

客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。

Redis 管道技术

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

Redis普通请求模型与管道请求模型对比

(普通请求模型)来源网络

RTT(Round-Trip Time),就是往返时延,在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。

一般认为,单向时延 = 传输时延t1 + 传播时延t2 + 排队时延t3

(管道请求模型)来源网络

性能对比

依赖

<dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-data-redis</artifactId>         </dependency>         <dependency>             <groupId>org.apache.commons</groupId>             <artifactId>commons-pool2</artifactId> </dependency>

配置文件

spring:   redis:     host: localhost     port: 6379     password: ******     database: 4     lettuce:       pool:         maxActive: 8         maxIdle: 100         minIdle: 10         maxWait: -1

普通方法

@Resource private StringRedisTemplate stringRedisTemplate ; public void execNormal() {         long start = System.currentTimeMillis() ;         for (int i = 0; i < 100_000; i++) {             stringRedisTemplate.opsForValue().set("k" + i, "v" + i) ;         }         System.out.println("耗时:" + (System.currentTimeMillis() - start) + " ms") ; }

测试结果

总耗时:47秒左右

管道技术

public void execPipeline() {         long start = System.currentTimeMillis() ;         stringRedisTemplate.executePipelined(new RedisCallback<Object>() {             @Override             public Object doInRedis(RedisConnection connection) throws DataAccessException {                 for (int i = 0; i < 100_000; i++) {                     connection.set(("pk" + i).getBytes(), ("pv" + i).getBytes()) ;                 }                 return null ;             }         }) ;         System.out.println("耗时:" + (System.currentTimeMillis() - start) + " ms") ; }

测试结果

耗时:13秒左右

性能提升了3倍多。

完毕!!!

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!