写点什么

Redis 管道技术瞬间提升系统性能,速度翻倍!

作者:高端章鱼哥
  • 2023-10-26
    福建
  • 本文字数:1143 字

    阅读完需:约 4 分钟

环境:SpringBoot2.6.12 + Redis6

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

  1. 客户端向服务端发送一个查询请求,并监听 Socket 返回,通常是以阻塞模式,等待服务端响应。

  2. 服务端处理命令,并将结果返回给客户端。

Redis 管道技术

Redis 管道技术是一种批处理技术,用于一次性处理多个 Redis 命令,从而提高整个交互的性能。通常情况下,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
复制代码

普通方法

@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 秒左右

管道技术

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") ;}1.2.3.4.5.6.7.8.9.10.11.12.13.
复制代码

测试结果


图片


耗时:13 秒左右,性能提升了 3 倍多。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
Redis管道技术瞬间提升系统性能,速度翻倍!_redis_高端章鱼哥_InfoQ写作社区