Redis Pipeline 性能测试

本文通过测试发现,对于小于200的数据量,普通查询的处理速度优于Redis Pipeline。然而,随着数据量增加,Pipeline处理耗时增长平缓,而普通查询性能下降明显。初次执行查询时,由于连接池获取连接的影响,耗时较长。测试结果仅供参考,实际应用中应结合系统环境和业务需求评估。
摘要由CSDN通过智能技术生成

背景:

闲聊八卦下,最近在优化系统的性能,通过pinpont分析,发现许多查询在Redis这块耗时特别不稳定,如下图

那么,框架组大佬丢来了一个解决方案,通过Redis Pipeline管道进行操作的话,会提升处理性能,说白了,就是节省请求-响应往返的时间(简称RTT)

揣着对Pipeline的好奇,以及在多大数据量的情况下的使用场景,于是,搭建了下环境写了几行代码测试下它和普通处理的性能

 

测试环境

1、应用程序和redis集群皆本机开发环境,避免网络延迟,Redis Cluster master节点3个,无slave节点

2、主要测试查询性能,查询type类型为hash的key 1数据,如下所示:
127.0.0.1:6479> hgetall 1
1) "sex"
2) ""
3) "name"
4) "\"yubing\""
5) "id"
6) "1"
7) "age"
8) "22"

 

测试代码

1、应用配置信息

spring.application.name=exec-data-redis
server.port=8981

#redis连接配置型
spring.redis.database=0
#spring.redis.host=127.0.0.1
#spring.redis.port=6379
#spring.redis.password=

#redis之 jedis配置信息
##连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
##连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
##连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
##连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
##连接超时时间(毫秒)
spring.redis.timeout=1000

spring.redis.cluster.nodes=192.168.197.198:6379,192.168.197.198:6479,192.168.197.198:6579
spring.redis.cluster.max-redirects=2

2、单元代码测试样例

@Test
public void pipelineTest() {
    long totalCostTime = 0;
    int totalNum = 3000;
    for (int num = 0; num < totalNum; num++) {
        long startTime = System.currentTimeMillis();
        redisTemplate.executePipelined(new RedisCallback<Object>() {
            @Override
            public Object doInRedis(RedisConnection redisConnection) throws DataAccessException {
                redisConnection.openPipeline();
                for (int i = 0; i < 10; i++) {
                    redisConnection.hashCommands().hGetAll("1".getBytes());
                }
                return null;
            }
        });

        long costTime = System.currentTimeMillis() - startTime;
        totalCostTime += costTime;
        Sy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值