Pipeline:可以运用在节点上解决Redis性能问题

Redis Pipeline通过批量发送命令来减少往返时间RTT,提高系统性能。它不保证原子性,适用于允许部分失败且对实时性要求不高的场景。尽管有内存消耗和非原子性的缺点,但在适当使用下,如批量数据写入或短信群发,Pipeline能显著提升效率。集群模式下,Pipeline受限于槽位分配,无法跨节点操作。与mget/mset和事务不同,Pipeline关注网络延迟,不保证一致性。
摘要由CSDN通过智能技术生成

前言

先来看看Redis客户端和服务端的交互模型

可以得出:

1.Redis是基于一个Request,一个Response的同步请求服务

2.客户端将数据包发送至服务器,然后服务器再将响应数据发送回客户端,这都需要花费一定时间的。这段时间被称为往返时间RTT(Round Trip Time)。

当一个客户端需要连续执行很多请求时,就很容易看出往返时间是影响系统性能的

例如:如果往返时间RTT是250毫秒,即使Redis服务器每秒钟能处理1000个请求,我们也只能每秒钟最多处理四个请求。

Redis提供了一种Pipeline(管道)方法可以改善上述用例的性能,下面看看。

Redis Pipeline交互模型

可以看到,客户端首先将执行的命令写入到缓冲区(内存)中,最后再一次性发送 Redis。

pipeline通过将一批命令进行打包,然后发送给服务器,服务器执行完按顺序打包返回,这样就减少了频繁交互往返的时间,提升了性能

基本使用

Pipeline pipeline =jedis.pipelined();
// 循环添加 1000个元素
for(int i = 0; i < 1000; i++){
    pipeline.rpush("rediskey", i + "");
        }
//执行 
pipeline.sync()
复制代码

使用起来还是很简单的

Pipeline的本质

我们深入分析一个请求交互的流程,真实的情况是它很复杂的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值