redis 管道(Pipelining)

有时,我们需要采用异步方式,一次发送多个指令,不同步等待其返回结果。

利用pipeline的方式从client打包多条命令一起发出,不需要等待单条命令的响应返回,

而redis服务端会处理完多条命令后会将多条命令的处理结果打包到一起返回给客户端(ps:有点类似存储过程的特点)。

这样可以取得非常好的执行效率。这就是管道,调用方法如下:

@Test
public void test4Pipelined() {
    Jedis jedis = new Jedis("localhost");
    Pipeline pipeline = jedis.pipelined();
    long start = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
        pipeline.set("p" + i, "p" + i);
    }
    List<Object> results = pipeline.syncAndReturnAll();
    long end = System.currentTimeMillis();
    System.out.println("Pipelined SET: " + ((end - start)/1000.0) + " seconds");
    jedis.disconnect();
}


内存数据库和普通数据库,优化的方式都差不多,连接池啊,批处理啊,乐观锁啊应该都是有的。



原文地址:https://www.cnblogs.com/lnas01/p/5928052.html