Redis 管道

news/2024/11/25 3:33:06/

问题由来:如何优化频繁命令往返造成的性能瓶颈?

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。

一个请求会遵循以下步骤:

1、客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。

2、服务端处理命令,并将结果返回给客户端。

上述两步称为:Round Trip Time(简称RTT,数据包往返于两端的时间)

如果同时需要执行大量的命令,那么就要等待上一条命令应答后再执行,这中间不仅仅多了RTT(Round Time Trip),而且还频繁调用系统IO,发送网络请求,同时需要redis调用多次read()和write()系统方法,系统方法会将数据从用户态转移到内核态,这样就会对进程上下文有比较大的影响了,性能不太好。

是什么

管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完完毕后,通过一条响应一次性将结果返回通过减少客户端与redis的通信次数来实现降低往返延时时间。pipeline实现的原理是队列,先进先出特性就保证数据的顺序性。

官网:Redis pipelining | Redis

定义:Pipeline是为了解决RTT往返回时,仅仅是将命令打包一次性发送,对整个Redis的执行不造成其它任何影响。

一句话批处理命令变种优化措施,类似Redis的原生批命令(mget和mset)

案例演示

总结

Pipeline与原生批量命令对比

1、原生批量命令是原子性(例如:mset,mget),pipeline是非原子性
2、原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令
3、原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成

Pipeline与事务对比

1、事务具有原子性,管道不具有原子性
2、管道一次性将多条命令发送到服务器,事务是一条一条的发,事务只有在接收到 exec 命令后才会执行,管道不会
3、执行事务时会阻塞其他命令的执行,而执行管道中的命令时不会

使用Pipeline注意事项

1、pipelines缓冲的指令只是会依次执行,不保证原子性,如果执行中指令发生异常,将会继续执行后续的指令
2、使用pipelines组装的命令个数不能太多,不然数据量过大客户端阻塞的时间可能过久,同时服务端此时也被迫回复一个队列答复,占用很多内存


http://www.ppmy.cn/news/773040.html

相关文章

实战-Android 蓝牙文件分享

需求 在文件管理中,增加一个通过蓝牙分享图片的功能 实现 Android蓝牙分享已经有现成的功能实现,直接上代码: private void blueToothSendFile() {try {Intent localIntent null;localIntent new Intent();localIntent.setAction(Intent.…

iOS 蓝牙开发实现文件传输

这是一篇旧文,三年前就写过了,一直没有时间分享出来,最近简单整理了下,希望能帮到有需要的人。   由于我这里没有相关的蓝牙设备,主要用了两个手机,一个作为主设备,一个做为从设备。另外进行蓝…

Ubuntu蓝牙Bluetooth命令行连接发送文件完整流程

1.确保bluez已安装好 $sudo apt install bluez 2.查看当前蓝牙阻塞状态 $sudo rfkill list 如果上面阻塞状态为yes,表示蓝牙关闭,则需要unblock打开蓝牙: $sudo rfkill unblock bluetooth 3.执行bluetoothctl $bluetoothctl 4.扫描其他蓝牙设备 $scan on 5.…

计算机如何用蓝牙实现文件传输,Win10系统电脑通过蓝牙进行传输文件操作步骤...

Win10系统如何使用蓝牙传输文件?相信用过win10系统的用户都知道,win10系统当中的蓝牙功能可以用来连接蓝牙耳机,蓝夜鼠标等设备。但其实,win10系统当中的蓝牙也可以用来传输文件,只需要用蓝牙将电脑与手机连接起来&…

linux蓝牙传送的文件存放,嵌入式蓝牙文件传送方案的实现

蓝牙是一种低成本、短距离无线通信技术,工作频段使用全球统一开放的2.4 GHz的ISM频段[1],并将此频段分为79个跳频点,采用跳频技术,增强了蓝牙通信的可靠性。蓝牙技术现已被广泛应用于无线通信领域中,如个人无线通信设备…

android+蓝牙传输文件,在Android中使用蓝牙的消息和文件传输

我正在开发一个应用程序,首先我们必须搜索和连接可用的配对蓝牙设备.我做到了连接.但之后我放了一个屏幕要求在文本和文件传输之间进行选择.当我选择文本时,将打开另一个屏幕,其中有edittext和按钮.无论用户在edittext中输入什么,点击按钮,都应该转移到BT聊天应用程序等连接的B…

android 12系统蓝牙传输大文件比较慢

1,修改蓝牙的波特率 这个改3000000能提高一点速度,蓝牙本来速度都很慢,最多也就200k左右速度 diff --git a/hardware/broadcom/libbt/include/vnd_rksdk.txt b/hardware/broadcom/libbt/include/vnd_rksdk.txt index d2d93fe48b0…af6c1662b77 100755 — a/hardwa…

android蓝牙传文件在哪里找,手机蓝牙传输的文件在哪里_华为手机蓝牙传输记录在哪-系统城...

蓝牙传输是无线传输的一种,在没网时很多用户都会选择用蓝牙来传输,但手机蓝牙传输的文件在哪里呢?有些使用华为手机的用户就有这一疑问,所以对此今天本文为大家分享的就是关于华为手机蓝牙传输记录的查看方法。 查看方法如下&…