REDIS是基于客户端服务器模型和请求/响应协议的TCP服务。这意味着请求将遵循以下步骤
客户端将数据数据包发送到服务器,然后服务器将响应数据发送回客户端,该数据需要一定时间。此时间称为“圆形trip Time”,即RTT()。这次,每个命令的执行时间可以表示为
可以看出,当执行更多执行时,每个命令的“圆形绊倒时间”会对性能产生一定的影响。
REDIS的基础通信协议提供了对Pipeline()的支持。可以通过管道发出命令。
管道可以减少客户与Redis之间的通信数量,以减少往返和延迟的累积价值。
Pipeline()不仅是减少降低往返成本的一种方法,而且还大大提高了您在给定的Redis服务器中每秒执行的总工作量。
使用管道()时,通常使用单个系统读取许多命令,并通过单个系统调用传递多个答案。因此,每秒执行的查询总数几乎随着较长的管道而线性增加,决赛和决赛几乎是线性的。如下图所示,可以达到没有组装线的基准的10倍。
REDIS配备了压力测试工具,可以使用此工具对其进行测试。
管道技术只能在重新启用上起作用;管道技术不能在集群模式下使用。
REDIS群集的关键空间分为16,384个插槽(),每个主节点负责处理16,384哈希插槽的一部分。执行特定的redis命令时,根据计算计算插槽(),然后计算出一个插槽()操作是根据插槽对特定节点redis执行的。
当使用管道技术时,一次将分批执行多个命令,因此每个命令都需要基于计算,然后根据插槽在特定节点上执行命令,即SayConnect,当前群集DO不支持此多节点操作。
优势
缺点
一些系统可能对可靠性有很高的要求。每个操作都需要知道此操作是否成功以及是否已将数据写入Redis,那么此场景不适合管道技术。
原始:https://juejin.cn/post/70979079526840328