00:00
各位同学大家好,我们继续,接下来我们将对red的管道它自身的知识点做一个小总结,主要从以下几个方面,第一个,管道与原生命令,第二个,管道与事物,第三个,使用管道要注意的事项。这个也很重要,你别忘了,杨哥可是翻了官网的。人家这是不是有个important note非常重要的笔记啊?OK,好,那么听一下杨哥说一下这些细节和重要的实践知识。第一个问题,管道与原生批量命令的对比,什么叫原生批量命令?刚才我们是不是看到过m set,那么大家思考一下,我先不打开,你们觉得刚才我们用这个管道干嘛?他们两个有没有什么区别?最经典啊,咱们就这么说。这个东西是在什么地方执行,是不是进到里面,它是red的什么原生基础命令,它天生就具备原子性,但是各位亲请告诉我,我现在用这个命令来执行的话,简单粗暴,直接有效,我是在什么地方Linux来这么一个干。
01:08
管道它具备原子性吗?不具备,所以第一个。原生命令是red自带的m set get,它是有原子性的,但是管道是非原子性。第一条第二个原生的批处理命令一次啊只能执行什么一种命令,没办法跨类型,但是pipeline支持批量执行不同的命令,我们刚才是不是演示过至少执行了三种string类型,哈希类型和list类型,OK,当然原生批处理命令是哪个端服务器端实现的,我就在red主机上干就行了,但是pipeline是需要服务端与客户端共同完成,我们刚才是不是用Linux访问了red再得到返回?好,这是它跟原生命令对比。第二个它和事物ready事物相关的对比,那么这两个学到这,同学们或多或少应该有点感觉它们两个有相似的地方,这个是用什么?
02:05
多条命令以事物的这么一个概念范畴合到一块儿,可以进行原子操作,而管道呢,它是也是多条命令,以一种什么批处理的方式合到一块来进行一次性的批处理操作,所以他们两个有类似的地方,表面相似,但实质截然不同。再次强调,所以。来吧。事物原则,管道没有原则,第二个管道是一次性的将多条命令发送到服务器,事物是什么?一条条的发Mar ex e对吧?事物只有在接受到ex命令之后才会执行,管道是不会,而且我们都晓得事物肚子里面还有个什么,是不是还有一个事物队列,这么说听懂了吧?而我们的管道,人家最重要的强调的是不是批处理好,这个是两个截然不同的东西。第三一个执行事务的时候会阻塞其他命令的执行,但执行管道中的命令是不会的,好,这是他们的第二个对比线么?第三一个就是管道自身的,那么同学们,我们在使用的时候,杨哥这几条命令。
03:13
是不是六条啊,这个没问题,别说六条一般哈,60条600条都没事,但是兄弟们要明白,量变是不是会引起质变啊,你干嘛用这个命令来执行的时候是多条命令给你打包过来,如果这个命令特别多呢?你们觉得性能会不会下降一样的,所以说要有个度,首先管道的缓冲指令只是会依次执行,它没有原子性,如果执行中发生了异常,后续它将会继续执行后续的指令,这是第一个小细节。第二个使用管道组成的命令个数不要太多啊,这个是非常重要的啊,不然数据量过大,客户端阻塞的时间也可能会很长,那么同时服务端此时也会被迫回复一个队列答复,占用很多内存。那么请看一下red,它自身重要的提示,他呢,也在这千叮嘱万嘱咐的说过,当你的客户端发布这个命令用管道的时候,这个服务器端将会强制的去队列里面要去。
04:13
处理去回复要占用内存,所以如果你需要发很多的命令的话,用管道,那么it it's better,最好的方法是send them as批处理each contain,呃,合理数量的,听懂了吗?比如说一个实例是10K的命令,那么就读到管道里面,它返回的也是10K命令的回复,然后比如说10K 10K的对吧?比如说100条命令一次啊,100条命令一次,就这么个意思,OK,好,那么所以说在使用管道的时候,那么请同学们务必小心,一,它自身使用有哪些坑命令比较多,二,它和原生以及事物这些概念命令的对比区别,OK,好,同学们管道就给大家介绍到这。
我来说两句