服务器之家

服务器之家 > 正文

SpringBoot项目中Redis之管道技术

时间:2021-03-23 23:24     来源/作者:今日头条

SpringBoot项目中Redis之管道技术

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

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

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

Redis 管道技术

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

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

SpringBoot项目中Redis之管道技术

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

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

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

SpringBoot项目中Redis之管道技术

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

性能对比

依赖

<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") ; 

测试结果

SpringBoot项目中Redis之管道技术

总耗时: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") ; 

测试结果

SpringBoot项目中Redis之管道技术

耗时:13秒左右

性能提升了3倍多。

完毕!!!

原文地址:https://www.toutiao.com/i6942277978181304863/

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部