环境:springboot2.3.9.RELEASE + redis3.2.100
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:
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倍多。
完毕!!!
本文转载自公众号读芯术(ID:AI_Discovery)。 笔者认为,编程最难的部分之一,并...
今日获悉,国际权威研究机构Gartner 2021年度《Magic Quadrant for Cloud AI Dev...
9月28日,记者获悉,亚士创能与阿里云达成数字化转型战略合作,借助阿里云在新零售...
如何启动程序 双击(windows系统下),或者在shell终端上执行./a.out 在shell终端...
客户介绍 新浪微博(Sina Weibo)是基于用户关系的社交媒体平台,用户可以通过 P...
本文转载自微信公众号「明哥的IT随笔」,作者IT明哥。转载本文请联系明哥的IT随...
根据预测,到2020年底全球5G签约用户数将达到2.2亿,其中中国占1.75亿,约为全球...
1.复习的感觉就是:马上要有一大波僵尸涌过来,但老子连向日葵都还没种! 2.老...
腾讯云代理商 ,腾讯云优惠折扣购买续费都打折 TOP云 (zuntop.com)旗下有多家公...
环境:springboot2.2.6RELEASE 实现目标:一写多读,读可以任意配置多个,默认都...