美文网首页
5 redis管道

5 redis管道

作者: lijiaccy | 来源:发表于2018-08-04 21:56 被阅读0次

什么是redis管道首先看一个例子

public static void test100w(){

   //第一个例子是直接用put插入
    Jedis jedis = new Jedis("172.30.154.123",6379);
    jedis.auth("123456"); 
   long start = System.currentTimeMillis();
    for (int i =0;i<100000;i++){
        jedis.set("key1"+i,"value"+i); 
   }
    long end = System.currentTimeMillis();
    System.out.println(end-start +"----普通set耗时");       

   //第二个使用管道
    start = System.currentTimeMillis();
    Pipeline p = jedis.pipelined();
    for (int i =0;i<100000;i++){ 
       p.set("key2"+i,"value"+i);
    }
    p.sync();
    end = System.currentTimeMillis(); 
   System.out.println(end-start +"----管道耗时");
    jedis.close();    }

我本机的执行结果是:

109539----普通set耗时
497----管道耗时

第一个直接set的,如果用多线程跑,会快一点,但是不可能达到管道这个时间。

为什么管道这么快

管道的定义:客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复。
正常情况下,每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client。
那么有没有这种情况client不用读取返回结果,redis依旧可以处理新请求。这就是管道(Pipeline)
通过pipeline方式当有大批量的操作时候。我们可以节省很多原来浪费在网络延迟的时间。需要注意到是用pipeline方式打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。
打包的命令越多,缓存消耗内存也越多。所以并是不是打包的命令越多越好。
具体多少合适需要根据具体情况测试。当然,使用Pipeline需要一定的容错性。并不是所有的提交都会被成功执行,如果不能成功执行,那么会在所有提交执行之后打印错误。也就是说管道中前面命令失败,后面命令不会有影响,继续执行。

管道的其他用法

其实管道和普通的的Jedis之类一样,有相同的方法。比如set,get,hmset等等。自己去实验吧。
这里我说的是用管道去删除有相同特性的的key。
我没用代码,直接用命令行的下面两个是一样的,一个是有密码,一个是没密码连接redis而已。主要的还是keys "key*" 这里,我是删除了刚刚插入的所有开头为key的键

src/redis-cli keys "key*" | xargs src/redis-cli del

src/redis-cli -h 172.30.154.123 -p 6379 -a 123456 keys "key*" | xargs src/redis-cli -h 172.30.154.123 -p 6379 -a 123456 del

相关文章

  • 5 redis管道

    什么是redis管道首先看一个例子 public static void test100w(){ 我本机的执行结果...

  • Redis管道技术的使用

    目录 Redis 管道技术 SpringDataRedis 使用管道 Redis 管道的性能测试 使用管道技术的注...

  • 高级篇之一

    Redis高级功能之分管道技术、消息队列 一、管道技术 我们先来试试管道技术,Redis 管道技术可以在服务端未响...

  • Redis管道

    客户端和Redis使用TCP协议连接。不论是客户端向redis发送命令还是redis向客户端返回命令的执行...

  • redis管道

    redis单个请求与批量操作对比   Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味...

  • Redis管道

    Redis之管道的使用原文地址: https://blog.piaoruiqing.com/blog/2019/...

  • Redis-管道

    Redis管道的使用原文介绍:http://redis.cn/topics/pipelining.html[htt...

  • go redis

    go 操作redis操作 Pipelining(管道) 发布/订阅 事务

  • Redis管道设计

    在大量请求发生的情况下,缓存本身设计已经足够的快速,这时候你会发现性能瓶颈已经不在于缓存读取上面了,而在于往返的请...

  • redis pipeline 管道

网友评论

      本文标题:5 redis管道

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