zoukankan      html  css  js  c++  java
  • 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

    可见,采用管道速度比一般的快十倍。
  • 相关阅读:
    模糊查询于聚合函数
    用SQL语句操作数据
    数据库增删改查
    错题本4
    数据查询基础
    用表组织数据
    初识数据库
    错题本3
    深入C#的String类
    定位
  • 原文地址:https://www.cnblogs.com/heqiyoujing/p/9362382.html
Copyright © 2011-2022 走看看