redis 管道(Pipelining)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
}


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



以上是关于redis 管道(Pipelining)的主要内容,如果未能解决你的问题,请参考以下文章

使用Redis管道提升性能

使用Redis管道提升性能

Redis 管道事务Lua 脚本对比

Redis中的管道有什么用?

Redis的Java客户端Jedis的八种调用方式(事务管道分布式…)介绍(转)

多路复用数据流