美文网首页Redis
Redis第1️⃣1️⃣课 pipeline

Redis第1️⃣1️⃣课 pipeline

作者: 小超_8b2f | 来源:发表于2019-04-30 19:27 被阅读3次

1)什么是流水线

批量传递n条命令给Redis服务器执行,节省n-1次网络传输时间。

注意:
Redis命令的执行时间是微秒级别
pipline每次条数要控制(网络)

远距离传输大概网络耗时图

2)客户端实现

/**
 * 环境:Redis5.0.4 : 本机redis-server 1万次 hset
 * 608ms
 */
public static void bigHashMap(Jedis jedis) {
    System.out.println("--->Starting set bigMap");
    long t1 = System.currentTimeMillis();
    for(int i = 0; i < 10000; i++)
        jedis.hset("bigMap01", "key"+i, "value"+i);
    long t2 = System.currentTimeMillis();
    System.out.println("--->set bigMap is endding! It takes " + (t2-t1) + "ms");
}
    
    
/**
 * 环境:Redis5.0.4 : 本机redis-server 用pipeline 1万次 hset
 * 125ms
 */
public static void bigHashMapPiepline(Jedis jedis) {
    System.out.println("--->Starting pipeline set bigMap");
    long t1 = System.currentTimeMillis();
    Pipeline piepline = jedis.pipelined();
    for(int i = 0; i < 10000; i++)
        piepline.hset("bigMap02", "key"+i, "value"+i);  
    piepline.syncAndReturnAll();
    
    long t2 = System.currentTimeMillis();
    System.out.println("--->pipeline set bigMap is endding! It takes " + (t2-t1) + "ms");
}

3)与原生操作Mset Mget M~对比

原生的m操作是原子操作
pipeline非原子,pipeline会在服务器端被拆分成独立的命令执行

4)使用建议

  1. 注意每次pipeline携带数据量
  2. pipeline每次只能作用在一个Redis节点上
  3. M操作与pipeline的区别

相关文章

网友评论

    本文标题:Redis第1️⃣1️⃣课 pipeline

    本文链接:https://www.haomeiwen.com/subject/xbqbnqtx.html