博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis中PipeLine使用(一)
阅读量:3574 次
发布时间:2019-05-20

本文共 984 字,大约阅读时间需要 3 分钟。

(一)简介

Redis客户端与Redis之间使用TCP协议进行连接,一个客户端可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client,因此当执行多条命令的时候都需要等待上一条命令执行完毕才能执行,如:get ‘0’,get ‘1’,get ‘2’

这里写图片描述

其执行过程如下图所示:

这里写图片描述

而管道(pipeline)可以一次性发送多条命令并在执行完后一次性将结果返回,pipeline通过减少客户端与redis的通信次数来实现降低往返延时时间,其过程如下图所示

这里写图片描述

(二)普通方式与pipeline的比较

1.测试环境:

redis版本2.4.15
jedis版本2.2.1

2.测试代码

分别向redis中插入100、500、1000、2000、5000、10000数据

long start=System.currentTimeMillis();        for (int i = 0; i <50000; i++) {
redis.set(String.valueOf(i),String.valueOf(i)); } long end=System.currentTimeMillis(); logger.info("the total time is:"+(end-start)); Pipeline pipe=redis.pipelined(); long start_pipe=System.currentTimeMillis(); for (int i = 0; i <50000; i++) {
pipe.set(String.valueOf(i),String.valueOf(i)); } pipe.sync(); long end_pipe=System.currentTimeMillis(); logger.info("the pipe total time is:"+(end_pipe-start_pipe));

测试结果对比:

这里写图片描述

你可能感兴趣的文章
[LeetCode javaScript] 3. 无重复字符的最长子串
查看>>
[LeetCode javaScript] 6. Z字形变换
查看>>
[LeetCode javaScript]455. 分发饼干
查看>>
[LeetCode javaScript] 735. 行星碰撞
查看>>
[LeetCode javaScript] 125. 验证回文串
查看>>
[LeetCode javaScript] 226. 翻转二叉树
查看>>
[LeetCode javaScript] 520. 检测大写字母
查看>>
[LeetCode javaScript] 53.最大子序和
查看>>
[LeetCode javaScript] 101. 对称二叉树
查看>>
[LeetCode javaScript] 860. 柠檬水找零
查看>>
[LeetCode javaScript] 118. 杨辉三角
查看>>
[LeetCode javaScript] 905. 按奇偶校验排序数组
查看>>
[LeetCode javaScript] 617. 合并二叉树
查看>>
[LeetCode javaScript] 292. Nim游戏
查看>>
[LeetCode javaScript] 896. 单调数列
查看>>
[LeetCode javaScript] 804. 唯一摩尔斯密码词
查看>>
[LeetCode javaScript] 476. 数字的补数
查看>>
[LeetCode javaScript] 811. 子域名访问计数
查看>>
[LeetCode javaScript] 414. 第三大的数
查看>>
[LeetCode javaScript] 242. 有效的字母异位词
查看>>