Redis Pub/Sub 指南

Redis 不仅仅是一个数据库,还可以作为支持发布和订阅(Pub/Sub)操作的消息代理。本文将使用 Navicat for Redis 简要概述 Redis 的 Pub/Sub 功能。

关于发布或订阅消息范式

Pub/Sub 是一种模式,发送者(广播者)不能向特定接收者(订阅者)发送消息。相反,发布的消息以频道形式发送,并且发送者不知道有多少订阅者正在订阅这个频道。而订阅者可以订阅一个或多个频道,以便只接收他们感兴趣的消息。以这种方式对发布者和订阅者进行解构能提高可扩展性,并更容易管理复杂系统中的信息流。

Redis Pub/Sub 提供了一种轻量级、快速、可扩展的消息解决方案,可用于各种目的,例如实时通知,在微服务之间发送消息或在单个应用程序的不同部分之间进行通信。

Redis中的消息传递

Redis 采用最多一次消息传递系统。顾名思义,消息只会被传递一次。因此,一旦 Redis 服务器发送消息,就不会再次发送。如果订阅者无法接收消息(例如,由于错误或网络中断),则消息将永远丢失。就像在收音机上收听你最喜欢的节目一样,如果错过了,就没有机会再听到。如果你的应用程序需要更强的传递保证,你应该使用 Redis Streams。

此外,Pub/Sub 与键空间无关。这意味着在数据库 10 上发布的消息能被数据库 1 上的订阅者接收到。如果你需要范围界定,Redis 建议在頻道名加上前缀(即 prod_mychannel,test_mychannel)。

使用 Navicat for Redis 发布消息

在 Navicat for Redis(或Navicat Premium)中,我们可以通过主工具栏上的 Pub/Sub 按钮打开 Pub/Sub 画面。我们可以在那里使用“发布窗格”发布消息:

pub-sub_screen (106K)

在 Redis 中,频道不是由用户创建的。当发布第一条消息或客户端订阅时,频道会自动创建。为了演示,我们将使用同一个 Redis 服务器创建两个连接。每个连接将充当不同的客户端。第一个连接将订阅“test_channel”,而第二个连接将向同一频道发布消息。这样做,我们希望消息在发布后能立即传递给订阅者。

在 Navicat 中订阅频道,我们只需要点击“订阅”按钮即可。这将打开“订阅”对话框:

subscribe_dialog (117K)

在这里,我们将输入频道名称“test_channel”,然后点击“订阅”。对话框关闭后,频道将出现在“频道”列表中,并记录订阅操作:

channel_added (110K)

如果要在 Navicat 中发布消息,我们将在“频道”列表中选择一个频道(由于我们此时只有一个通道,因此是默认选项),然后在“消息”文本字段中输入消息,点击“发布”。此时,我们应该看到收到消息的通知:

message_received (75K)

总结

本文使用 Navicat for Redis 简要介绍了 Redis 的 Pub/Sub 功能。如果你有兴趣试用 Navicat for Redis,可以在 此处 下载。试用版具备完整功能,试用期为 14 天。

相关技术文章

开始使用 Redis

Navicat for Redis 功能介绍

Redis 数据类型

如何在 Redis 中处理键值

Redis Pub/Sub 指南

Redis 列表 | 概述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/86258.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微服务学习笔记】认识微服务

【微服务学习笔记】认识微服务 单体架构 分布式架构 微服务架构 SpringCloud 服务拆分和注意事项 服务拆分的案例demo 各个服务之间的数据库都是相互独立的,你不能直接访问对方的数据库,只能从一个服务像另外一个服务发起远程调用 在订单模块的服务中 …

C++信息学奥赛2046:【例5.15】替换字母

这段代码的功能是对输入的字符串进行处理&#xff0c;将字符串中的字符 a 替换为字符 b 后输出结果。 #include<bits/stdc.h> using namespace std; int main() {string s; // 定义字符串变量s&#xff0c;用来存储输入的字符串char a, b; // 定义字符变量a和b&#xff…

Android 11 Display亮灭屏

系统休眠唤醒的时候会涉及到亮灭屏&#xff0c;下面分析下系统&#xff08;高通8155平台&#xff09;Display亮灭屏流程 1. 点亮屏幕 点亮屏幕入口在framework/base/下面LightsService.java&#xff0c;然后通过调用SurfaceControl.java ,最终调用到framework/native下面的Sur…

Lnton羚通云算力平台【PyTorch】教程:关于Tensors的基础知识

Tensors Tensors 是一个特殊的数据结构&#xff0c;非常类似于数组和矩阵&#xff0c;在 PyTorch 中&#xff0c;我们使用 tensors 编码模型的输入和输出&#xff0c;以及模型的参数。 Tensors 非常类似于 NumPy 的 ndarrays&#xff0c; tensors 可以运行在 GPU 以及其他硬件…

so-vits-svc 4.1 详细使用记录

前几个月在B站听到了许多AI孙燕姿的“作品”&#xff0c;自己也很好奇是如何做到的。这不最近有了点时间&#xff0c;体验实践了一下。 其实so-vits-svc的文档写的已经比较详细了。但实际操作起来&#xff0c;因为环境的原因会遇到各种问题。本篇也是将我遇到的问题整理出来&a…

Windows使用MobaXterm远程访问ubuntu20.04桌面

参考ubuntu 2020.4 安装vnc 一、脚本文件 remote_setup.sh脚本文件内容&#xff1a; #! /bin/bash #参考链接&#xff1a;https://blog.csdn.net/hailangdeyingzi/article/details/124507304 sudo apt update sudo apt install x11vnc -y sudo x11vnc -storepasswd telpo.12…

LeetCode算法心得——k-avoiding 数组的最小总和(标记数组)

大家好&#xff0c;我是晴天学长&#xff0c;这是一个细节题和一部分的思维题哈&#xff01; 2) .算法思路 k-avoiding 数组的最小总和 1,填充一个1到n 的Boolean的数组 要n个数&#xff0c;但是数组大小不能确定。 所以建立1000的大小。 2.遍历筛选&#xff0c;如果数组中有这…

测试框架pytest教程(5)运行失败用例-rerun failed tests

# content of test_50.py import pytestpytest.mark.parametrize("i", range(50)) def test_num(i):if i in (17, 25):pytest.fail("bad luck") 运行这个文件&#xff0c;2个失败&#xff0c;48个通过。 要运行上次失败的测试用例&#xff0c;可以使用--l…

vue 简单实验 自定义组件 综合应用 传参数 循环

1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"todo-list-app"><ol><!--现在我们为每个 todo-item 提供 todo 对象todo 对象是变量&#xff0c;即其内容可以是动态的。…

Postman 如何进行参数化

前言 Postman作为一款接口测试工具&#xff0c;受到了非常多的开发工程师的拥护。 那么做为测试&#xff0c;了解Postman这款工具就成了必要的了。 这篇文章就是为了解决Postman怎么进行参数化的。 全局变量 全局变量是将这个变量设置成整个程序的都可以用&#xff0c;不用去…

深度学习3:激活函数

一、激活函数的简介与由来 激活函数&#xff1a;是用来加入非线性因素的&#xff0c;解决线性模型所不能解决的问题。 线性函数的组合解决的问题太有限了&#xff0c;碰到非线性问题就束手无策了。如下图。 通过激活函数映射之后&#xff0c;可以输出非线性函数。 最后再通过…

OpenHarmony应用实现二维码扫码识别

本文转载自《OpenHarmony应用实现二维码扫码识别》&#xff0c;作者zhushangyuan_ 概念介绍 二维码的应用场景非常广泛&#xff0c;在购物应用中&#xff0c;消费者可以直接扫描商品二维码&#xff0c;浏览并购买产品&#xff0c;如图是购物应用的扫描二维码的页面。 本文就以橘…

网络防御与蓝队实践:探讨网络防御策略、入侵检测系统、安全事件响应等蓝队方面的实际案例和方法

第一章&#xff1a;引言 网络安全一直是当今信息社会中至关重要的话题。随着技术的不断发展&#xff0c;网络威胁也愈发复杂和隐匿。在这样的背景下&#xff0c;网络防御变得尤为重要&#xff0c;蓝队作为网络防御的重要一环&#xff0c;起着至关重要的作用。本文将深入探讨网…

部署FTP服务(二)

目录 2.访问FTP服务 1.使用ftp命令行工具 2.使用浏览器 3.使用FileZilla Client 3.Serv-U 1.定义新域 2.创建用户 4. windowsserver搭建ftp服务器 一、FTP工具 二、Windows资源管理器 三、IE浏览器访问 2.访问FTP服务 下面在一台装有Windows10操作系统的计算机中&#…

unity 之 Vector 数据类型

文章目录 Vector 1Vector 2Vector 3Vector 4 Vector 1 在Unity中&#xff0c;Vector1 并不是一个常见的向量类型。 如果您需要表示标量&#xff08;单个值&#xff09;或者只需要一维的数据&#xff0c;通常会直接使用浮点数&#xff08;float&#xff09;或整数&#xff08;in…

ONES × 鲁邦通|打造研发一体化平台,落地组织级流程规范

近日&#xff0c;ONES 签约工业互联网行业领先的解决方案提供商——鲁邦通&#xff0c;助力鲁邦通优化组织级流程规范&#xff0c;落地从需求到交付的全生命周期线上化管理。 依托于 ONES 一站式研发管理平台&#xff0c;鲁邦通在软硬件设计开发、项目管理和精益生产等方面的数…

大语言模型之四-LlaMA-2从模型到应用

最近开源大语言模型LlaMA-2火出圈&#xff0c;从huggingface的Open LLM Leaderboard开源大语言模型排行榜可以看到LlaMA-2还是非常有潜力的开源商用大语言模型之一&#xff0c;相比InstructGPT&#xff0c;LlaMA-2在数据质量、培训技术、能力评估、安全评估和责任发布方面进行了…

Gitlab服务部署及应用

第四阶段 时 间&#xff1a;2023年8月21日 参加人&#xff1a;全班人员 内 容&#xff1a; Gitlab服务部署及应用 目录 一、Gitlab简介 二、Gitlab工作原理 三、Gitlab服务构成 四、Gitlab的优点 五、Gitlab环境部署 &#xff08;一&#xff09;安装部署 &#xf…

数据结构(3)

线性表是多个具有相同特征的数据的有限序列。 前驱元素&#xff1a;A在B前面&#xff0c;称A为B的前驱元素。 后继元素&#xff1a;B在A后面&#xff0c;称B为A的后继元素。 线性表特征&#xff1a; 1.一个元素没有前驱元素&#xff0c;就是头结点&#xff1b; 2.最后一个…

Promise.all和promise.race的应用场景举例

Promise.all( ).then( )适用于处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 <template><div class"box"><el-button type"primary" plain click"clickFn">点开弹出框</el-button></div> &…
最新文章