Redis pipeline

Redis的pipeline(管道)功能在命令行中没有,但redis是支持pipeline的。首先我们来了解一下为什么会有 pipeline ?

下面这个图,是客户端请求redis的流程:当客户端 请求 Redis 的时候,会有网络延迟,比如我们的一次请求是:
总耗时 = 网络请求 + 执行命令 + 返回数据
如果我们有1000 次的请求
总耗时 = (网络请求 + 执行命令 + 返回数据)* 1000
这种消耗是我们不能接收的。但是我们把需要执行的命令进行打包,进行一次去请求,就可以节省很多网络请求+返回数据的时间。
在这里插入图片描述
下面是 pipeline 的 请求示意图:
在这里插入图片描述

N个命令pipeline 命令(包含N个命令)
N次网络+命令1次网络+N个命令

N个命令 和 pipeline 的测试

public String redisIndex(){

        Long time = System.currentTimeMillis();
        for (int i = 0;i < 1000;i++){
            redisTemplate.opsForValue().increment("b",1L);
        }
        log.info("多次请求 耗时:" + (System.currentTimeMillis() - time)+"毫秒");

        time = System.currentTimeMillis();
        List<Object> List = redisTemplate.executePipelined(new RedisCallback<Long>() {

            @Override
            public Long doInRedis(RedisConnection connection) throws DataAccessException {

                connection.openPipeline();
                for (int i = 0;i < 1000;i++){
                    connection.incrBy("a".getBytes(),1L);
                }
                connection.closePipeline();

                return null;
            }
        });
        log.info("pipeline 耗时:" + (System.currentTimeMillis() - time)+"毫秒");


        return "";
    }

执行结果:
多次请求 耗时:43862毫秒
pipeline 耗时:68毫秒

从这个结果可以看出,两种的消耗的差距还是很大的。

使用建议

  1. 每次 pipeline 的携带量不要过大,比如1W条,可以分10次,每次1000。

之前准备学习的时候写博客,可是都没有坚持下去,希望这次可以有始有终。
Redis 坚持第一天 :为什么要使用 redis ?
Redis 坚持第二天 :Redis 的安装与启动
Redis 坚持第三天 :Redis 使用配置文件启动,常见配置学习。
Redis 坚持第四天 :

  1. Redis 五种常见的数据结构:String
  2. Redis 五种常见的数据结构:Hash
  3. Redis 五种常见的数据结构:List
  4. Redis 五种常见的数据结构:Set
  5. Redis 五种常见的数据结构:zset

Redis 坚持第五天 :Redis 客户端:Jredis 和 spring-data-redis 整合。
Redis 坚持第六天 :Redis 慢查询日志。
Redis 坚持第七天 :Redis pipeline。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小小星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值