Redis的pipeline

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的pipeline相关的知识,希望对你有一定的参考价值。

参考技术A pipeline:可将命令合并为一次IO,可降低延迟。

本机测试redis-pipeline

测试结果:

在本机测试中,pipeline性能比普通set高出很多

redis之pipeline使用

redis之pipeline

  我们要完成一个业务,可能会对redis做连续的多个操作,这有很多个步骤是需要依次连续执行的。这样的场景,网络传输的耗时将是限制redis处理量的主要瓶颈。

  那么此时就可以引入pipeline了,pipeline管道就是解决执行大量命令时、会产生大量同学次数而导致延迟的技术。

  其实原理很简单,pipeline就是把所有的命令一次发过去,避免频繁的发送、接收带来的网络开销,redis在打包接收到一堆命令后,依次执行,然后把结果再打包返回给客户端。

  

 1 public String tsetRedis(){
 2         Long time = System.currentTimeMillis();
 3         for (int i = 0; i < 10000; i++) {
 4             stringRedisTemplate.opsForValue().set("yi" + i, "wo" + i);
 5         }
 6         Long time1 = System.currentTimeMillis();
 7         System.out.println("耗时:" + (time1 - time));
 8         long time4 = System.currentTimeMillis();
 9         stringRedisTemplate.executePipelined(new SessionCallback<Object>() {
10             @Override
11             public <K, V> Object execute(RedisOperations<K, V> redisOperations) throws DataAccessException {
12                 for (int i = 0; i < 10000; i++) {
13                     stringRedisTemplate.opsForValue().set("qiang" + i, "wo" + i);
14                 }
15                 return null;  //RedisTemplate执行executePipelined方法是有返回值的
16             }
17         });
18         Long time2 = System.currentTimeMillis();
19         System.out.println("耗时:" + (time2 - time4));
20         return "redis正常耗时:" + (time1 - time) + "<br/>" + "redis管道耗时:" + (time2 - time4);
21     }

  结果:

redis正常耗时:423ms
redis管道耗时:40ms

可见,采用管道速度比一般的快十倍。


以上是关于Redis的pipeline的主要内容,如果未能解决你的问题,请参考以下文章

apache beam入门之组装数据变换过程

DataFlow SDK 2.x:PubSubIO 授权错误

无法通过 KafkaIO 在光束中读取卡夫卡

在 Dataflow 管道中写入 BigQuery 表失败

Pipeline模式与Factory+Provider模式的应用

加载训练有素的 scikit-learn/imblearn 管道模型时出现问题