Redis管道

Pipeline通过减少客户端与Redis服务端的通信次数,优化频繁命令导致的性能问题。它允许一次性发送多条命令,服务端依次处理后一并返回结果,但不保证原子性。与原生批量命令和事物相比,Pipeline有其独特优势和注意事项,如非原子性和可能的指令过多问题。
摘要由CSDN通过智能技术生成

1.产生背景

  1. 如何优化频繁命令往外造成的性能瓶颈?
    pipline (管道)可以一次性发送多条命令给服务端,服务端依次逐条处理完毕后,通过一条响应一次性将结果返回,通过减少客服端与redis的通信次数,来实现降低往返的延迟时间。

    pipline实现原理的队列,先进先出的特性保证数据的原始性。
    批处理变种优化措施,类似redis原生命令mget,mset

在这里插入图片描述

使用

  1. 新建cmd.txt,加入以下内容
    set k1 v1
    hset hk1 name zhangsan
    lpush list 1 2 3 4
  2. 执行命令
    cat cmd.txt | redis-cli --pipe

总结

1. pipeline与原生批量命令对比
(1)原生批量命令具备原子性,pipeline非原子性
(2)原生命令一次只能执行一种命令,pipeline支持批量执行不同命令
(3)原生命令是服务端实现,而pipeline需要服务端和客户端共同完成

2. pipeline与事物对比
(1)事物具备原子性,pipeline不具备原子性
(2)pipeline一次将多条命令发送到服务端,事物是一条一条的发,事物只有在接收到exec才会执行
(3)执行事物会阻塞其他命令的执行,而pipeline不会。

3.使用管道注意事项
(1)pipeline缓冲的指令只是会依次执行,不保证原子性,如果执行中发生异常,将会执行后续的指令
(2)使用pipline组装的指令不能太多,不然过大,客服端阻塞的时间可能会很久,此时服务端也会被迫回复一个队列的答复,占用服务端内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值