当前位置: 首页 > 科技观察

Redis管道技术_0

时间:2023-03-12 17:01:00 科技观察

SpringBoot项目中的环境:springboot2.3.9.RELEASE+redis3.2.100Redis是一个基于client-server模型和request/response协议的TCP服务。这意味着通常一个请求会经过以下几个步骤:客户端向服务器发送查询请求,并监听Socket返回,通常是阻塞模式,等待服务器响应。服务器处理命令并将结果返回给客户端。Redis管道技术Redis管道技术可以在服务器没有响应的情况下继续向服务器发送请求,最终一次读取所有服务器的响应。Redis普通请求模型与管道请求模型对比(普通请求模型)来源网络RTT(Round-TripTime),是往返时延,是计算机网络中的一个重要性能指标,表示数据从sendertothesendingendreceivestheconfirmationfromthereceivingend(接收端收到数据后立即发送确认),以及经历的总时间延迟。一般认为单向延迟=传输延迟t1+传播延迟t2+排队延迟t3(管道请求模型)源网络性能比较依赖于org.springframework.bootspring-boot-starter-data-redisorg.apache.commonscommons-pool2配置文件spring:redis:host:localhostport:6379password:******database:4lettuce:pool:maxActive:8maxIdle:100minIdle:10maxWait:-1Normalmethod@ResourceprivateStringRedisTemplatestringRedisTemplate;publicvoidexecNormal(){longstart=System.currentTimeMillis();for(inti=0;i<100_000;i++){stringRedisTemplate.opsForValue().set("k"+i,"v"+i);}System.out.println("耗时:"+(System.currentTimeMillis()-start)+"ms");}测试结果总耗时:约47秒流水线技术publicvoidexecPipeline(){longstart=System.currentTimeMillis();stringRedisTemplate.executePipelined(newRedisCallback(){@OverridepublicObjectdoInRedis(RedissConnectionconnection)throwsDataAccessException{for(inti=0;i<100_000;i++){connection.set(("pk"+i).getBytes(),("pv"+i).getBytes());}returnnull;}});System.out.println("耗时:"+(System.currentTimeMillis()-start)+"ms");}测试结果耗时:约13秒,性能提升3倍以上。完全的!!!