redis学习十八:redis管道

发布时间 2023-07-11 10:11:07作者: 浮笙芸芸

如何优化频繁命令往返造成的性能瓶颈:管道可以一次性发送多条命令给服务端,服务端依次处理完毕后,

通过一条响应一次性将结果返回,通过减少客户端与redis的通信次数来实现降低往返延时时间,管道实现

的原理是队列,先进先出的特性就保证数据的顺序性。

管道定义:pipeline是为了解决rtt往返回时,仅仅是将命令打包一次性发送,对整个redis的执行不造成任何其他影响

批处理命令的变种优化措施,类似redis的原生批命令

实操:

 写一个txt记录命令,使用此命令,最后进入redis查看,能够获取对应key的vaule

 总结:

管道与原生批命令对比:

原生批量命令是原子性(如mset,mget),pipeline是非原子性

原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令

原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成

注意事项:

pipeline缓冲的指令只是会依次执行,不保证原子性,如果执行中指令发生异常,将会继续执行后续的指令

使用pipeline组装的命令个数不能太多,不然数据量过大客户端阻塞的时间可能过久,同时服务端此时也被迫恢复一个队列答复,占用很多内存