环境:SpringBoot2.6.12 + redis6
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务 。这意味着通常情况下一个请求会遵循以下步骤:
- 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应 。
- 服务端处理命令,并将结果返回给客户端 。
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: localhostport: 6379password: ******database: 4lettuce:pool:maxActive: 8maxIdle: 100minIdle: 10maxWAIt: -1普通方法@Resourceprivate 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秒左右
管道技术【Redis管道技术瞬间提升系统性能,速度翻倍!】
public void execPipeline() {long start = System.currentTimeMillis() ;stringRedisTemplate.executePipelined(new RedisCallback<Object>() {@Overridepublic 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倍多 。
推荐阅读
- 意蜂的春季繁殖技术 意蜂春繁技术管理诀窍是什么
- Redis 的主库挂了,如何不间断服务?
- Redis中万金油的String,为什么不好用了?
- 无敌到寂寞!Redis进军磁盘存储!
- 利用Java AOP实现面向切面编程的关键技术
- 蜜蜂养殖技术培训 蜜蜂养殖技术
- 兔子养殖技术 兔子养殖技术培训
- 水蛭养殖技术 国外水蛭养殖技术
- 泥鳅养殖技术 台湾泥鳅养殖技术
- 生猪养殖技术指导方案 生猪养殖技术
