前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis的pipline测试

Redis的pipline测试

作者头像
呼延十
发布2019-06-26 17:24:07
5930
发布2019-06-26 17:24:07
举报
文章被收录于专栏:呼延呼延

前言

Redis的性能是很好的,但是仍然有其性能上限.Redis提供了Pipline功能,可以在某些场景下极大的提升qps.

为什么需要pipline

先介绍两个概念:Request/Response protocolsRTT.

Redis是一个使用TCP进行通讯的C/S架构,也被叫做请求/响应协议.

也就是说在redis处理一条命令的时候,需要:

  1. 客户端将请求发送至服务器,然后阻塞(一般情况下)地等待响应.
  2. 服务器处理请求并且将结果返回至客户端.

可以发现在这个过程中有两个信息的发送事件,这个事件叫做RTT(Round Trip Time).pipline主要节省的就是rtt时间.

使用pipline的性能测试

我们使用的客户端为Jedis,分别进行10000,100000次操作,邮箱变量有本地redis以及远程redis(因为远程通信的网络延迟一般也是避免不了的).测试结果如下:

times

不使用pipline

使用pipline

本地10000

406ms

38ms

本地100000

3557ms

131ms

远程10000

43641ms

76ms

远程100000

388632ms

3433ms

从实验结果可以看出,RTT占用的时间是非常大的,远远比redis本身处理命令占用的时间更多.因此在提升性能的时候,我们应该首先节省RTT时间.

测试代码如下:

代码语言:javascript
复制
    public static void main(String[] args) {
        Ticker ticker = new Ticker();
        Jedis jedis = new Jedis("localhost");
        jedis.select(2);

        ticker.tick("start");

        for (int i = 0; i < TIMES; i++) {
            jedis.incr(i + "_1");
        }
        ticker.tick("no pip");

        Pipeline pipeline = jedis.pipelined();
        for (int i = 0; i < TIMES; i++) {
            pipeline.incr(i + "_2");
        }
        ticker.tick("pip");

        System.out.println(ticker.toString());

    }

参考文章

官方介绍

完。

ChangeLog

2019-06-13 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十

var gitment = new Gitment({ id: 'Redis的pipline测试', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')



本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 为什么需要pipline
  • 使用pipline的性能测试
  • 参考文章
    • ChangeLog
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档