redis必杀命令:发布订阅

2023-10-26

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
这里写图片描述

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
这里写图片描述

例如:
以下实例演示了发布订阅是如何工作的。在我们实例中我们创建了订阅频道名为 redisChat:

redis 127.0.0.1:6379> SUBSCRIBE redisChat

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1

现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。

redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"

(integer) 1

redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by w3cschool.cc"

(integer) 1

# 订阅者的客户端会显示如下消息
1) "message"
2) "redisChat"
3) "Redis is a great caching technique"
1) "message"
2) "redisChat"
3) "Learn redis by w3cschool.cc"

Redis 发布订阅命令

序号  命令及描述
1   PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
2   PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
3   PUBLISH channel message 将信息发送到指定的频道。
4   PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
5   SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
6   UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。

一、Redis Psubscribe 命令 - 订阅一个或多个符合给定模式的频道。

每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等)。 news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。

语法
redis Psubscribe 命令基本语法如下:

redis 127.0.0.1:6379> PSUBSCRIBE pattern [pattern ...]

可用版本:>=2.0.0

返回值
接收到的信息。

例如

127.0.0.1:6379> PSUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "redisChat"
3) (integer) 1

二、Redis Pubsub 命令用于查看订阅与发布系统状态,它由数个不同格式的子命令组成
语法
redis Pubsub 命令基本语法如下:

redis 127.0.0.1:6379> PUBSUB <subcommand> [argument [argument ...]]

可用版本:>= 2.8.0

返回值

由活跃频道组成的列表。

例如:

127.0.0.1:6379> PUBSUB CHANNELS
1) "redisChat"
127.0.0.1:6379> 

其余几个命令比较简单,不一一列举。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis必杀命令:发布订阅 的相关文章

  • 如何获取redis中的所有集合?

    我知道 KEYS 命令 但它只返回键 我猜测所有类型为 String 的键 并且显然集合不被视为键 有没有获取数据库中所有集合的命令 其他数据类型 散列 列表 排序集 怎么样 http redis io topics data types
  • 从 Redis 中删除会话 (Django)

    我使用 Django 和 Redis 作为会话引擎 也是 Celery 但那是别的东西 它运行完美 我可以看到速度的提高 SESSION ENGINE django contrib sessions backends cached db 我
  • Python-如何检查Redis服务器是否可用

    我正在开发一个用于访问 Redis 服务器的 Python 服务 类 我想知道如何检查Redis服务器是否正在运行 而且如果不知何故我无法连接到它 这是我的代码的一部分 import redis rs redis Redis localho
  • 如何将redis模块安装到AWS elasticache?

    基本上 我们知道 AWS 中的 ElastiCache 使用 MemCached 或 Redis 我们选择了 Redis 并发现了一个可能对我们有用的模块 有没有办法将模块安装到我们的 ElastiCache 实例中 由于elasticac
  • 连接Redis集群失败

    我已经设置了 Redis 集群谷歌计算引擎 http console developers google com by 点击部署 https cloud google com solutions redis click to deploy
  • 如何使用包含空格的键从Redis获取值?

    使用 telnet 我输入这样的命令行命令 get field with spaces get field with spaces get field with spaces 这三个都返回相同的错误 ERR wrong number of
  • Python Reddis 队列 ValueError:worker 无法处理 __main__ 模块中的函数

    我正在尝试使用 python rq 在 redis 中排队一项基本作业 但它会抛出此错误 ValueError 函数来自main模块无法被工作人员处理 这是我的程序 import requests def count words at ur
  • 如何从哨兵网址创建redis python客户端?

    我的网址为 BROKER URL sentinel 192 168 10 1 26379 0 sentinel 192 168 10 2 26379 0 sentinel 192 168 10 3 26379 0 在此 redis运行在19
  • 如何在node.js中为相同的两个应用程序分离redis数据库

    我有两个相同的应用程序 一个用于演示 一个用于开发 并且我使用 redis 数据库来存储键值 我如何为这两个不同的应用程序分离 redis 数据库 我使用 Node js 作为 Redis 客户端 我用这个https github com
  • Redis多插入问题

    我尝试多次插入 但它给了我错误 http pastie org 7337421 http pastie org 7337421 cat mass insert txt 3 r n 3 r nSET r n 3 r nkey r n 5 r
  • AWS Redis 从外部连接

    有没有办法从外部 AWS 网络连接 AWS 上托管的 Redis 实例 我有一个基于 Windows 的 EC2 实例在 AWS 上运行 另一个是 Redis 缓存节点 我知道有人问过这个问题 但答案是在基于 Linux 的系统中 但我的是
  • 使用brew在MacOSx上安装Redis JSON

    如何使用brew 在 macOSx 上安装 RedisJSON 如何在不编译redis的情况下启用redis上的模块 我不想使用 docker 客户端 Redis Stack 可能是最简单的方法 它不仅仅是 RedisJSON 还包括 Re
  • 如何从 python 将无穷大传递给 redis?

    我正在使用 redis py 并希望将 inf 和 inf 与 ZRANGEBYSCORE 一起使用 我尝试使用 inf 的字符串和浮点来执行此操作 但它们返回一个空集 我怎样才能做到这一点 EDIT 我尝试执行以下命令 redis Str
  • Spring RedisTemplate:8次调用后方法键挂起

    我使用 Spring RedisTemplate spring data redis 1 7 1 与 Redis 进行通信 我需要通过正则表达式获取然后删除键 例如 context user1 我用的方法 RedisTemplate key
  • connect-redis - 如何保护会话对象免受竞争条件影响

    我使用 nodejs 和 connect redis 来存储会话数据 我将用户数据保存在会话中 并在会话生命周期中使用它 我注意到两个更改会话数据的请求之间可能存在竞争条件 我尝试过使用 redis lock 来锁定会话 但这对我来说有点问
  • 为什么Redis中不建议使用KEYS?

    在Redis中 建议不要使用按键命令 https redis io commands KEYS 为什么会这样呢 是因为它的时间复杂度是 O N 吗 或者是别的什么原因 我做了下面的实验来证明KEYS命令有多么危险 当带有 KEYS 的一个命
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • Redis hash写入速度非常慢

    我面临一个非常奇怪的问题 使用 Redis 时 我的写入速度非常糟糕 在理想的情况下 写入速度应该接近 RAM 上的写入速度 这是我的基准 package redisbenchmark import redis clients jedis
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf

随机推荐

  • weex实践初探

    weex是阿里2016年开源的项目 号称通过撰写HTML CSS JavaScript来开发原生android ios的UI界面 并且接近原生的性能体验 写一次 多端编译 一直是无线移动追求的目标 既然阿里牛皮吹得这么大 本人也非常迫切体验
  • EncodedResource类解读

    EncodedResource类解读 EncodedResource介绍 EncodedResource是spring中Resource编码相关的封装类 EncodedResource里面封装了一个Resource成员属性 其实主要功能就是
  • MySQL索引类型与索引原理

    1 索引类型 索引可以提升查询速度 会影响where查询 以及order by排序 MySQL索引类型如下 从索引存储结构划分 B Tree索引 Hash索引 FULLTEXT全文索引 R Tree索引 从应用层次划分 普通索引 唯一索引
  • Uncaught ReferenceError: xxx is not defined at HTMLInputElement.onclick已解决

    触发标签的onclick事件报错如下 Uncaught ReferenceError http is not defined at HTMLInputElement onclick list do pageType initialize 2
  • Flutter1.0入门基础

    Flutter1 0入门基础 注 原课程视频是基于Flutter1的 目标 开发入门 工具 环境搭建 入门必备 开发技巧 导航框架 常用功能 开发流程 网络 数据存储 列表 Flutter与Native混编 工程封装 模块开发 AI结合 项
  • java初始化map的四种方式

    第一种 最常见的方式 新建Map对象 public class Demo private static final Map
  • extern指针和数组的用法

    对extern我们先来一段直白的告白 extern是计算机语言中的一个函数 可置于变量或者函数前 以表示变量或者函数的定义在别的文件中 提示编译器遇到此变量或函数时 在其它模块中寻找其定义 另外 extern也可用来进行链接指定 来自百度百
  • 毕业设计:电子/通信/物联网/计算机专业选题目参考(嵌入式linux/单片机STM32/web/图像)

    本文推荐的毕业设计题目涉及以下技术 嵌入式Linux 单片机STM32 Opencv Qt Web 百度AI YOLO 目标检测 深度学习 等 适用于 电子信息 通信 物联网 计算机 等专业的毕业设计题目 支持服务 题目定制 选题答疑 代做
  • Android自定义View实现图片裁剪功能(本地选择图片进行裁剪)

    使用安卓自带的裁剪工具 发现有版本兼容问题 而且图片模糊问题也不好解决 于是自己动手绘制一个裁剪工具 先看效果 最终效果 自定义截图 实现思路 打开本地相册 获得图片Uri Uri转为Bitmap 用自定义View绘制可拖动选框 获得用户的
  • PhotonServer游戏服务器学习一

    步骤一 1 PhotonServe的官方网站https www photonengine com zh CN Photon 进入到官网后点击SDKs 选择Server 工程 点击SeverSDK ON PREMISES进行下载 需要注册一个
  • JDBC连接Access数据库的几种方式介绍

    接下来总结一下常用的几种连接方式 例如有如下的Access数据库student 表basic 以及6条记录 现在通过几种方式在Jsp中将他们的数据显示出来 如图所示 对于几种连接Access数据库的方式 基本上都是基于JDBC ODBC方式
  • 关于pytorch、torch_geometric安装 22.12.25

    系统坏了 重装系统 一开始以为电脑只能装cuda9 2版本一下 装了之后 显卡驱动自动更新了 然后显示可以装CUDA11 7版本一下 cuda 9 2 torch geometric 1 61 pytorch 1 6 0 python3 8
  • Linux 根目录爆掉,怎么办?

    极力推荐文章 欢迎收藏Android 干货分享 本篇文章主要介绍 Linux 开发中的部分知识点 通过阅读本篇文章 您将收获以下内容 一 cannot create temp file for here document No space
  • WebStorm 2023 下载、安装、汉化

    1 下载WebStorm 1 1 官网下载地址 https www jetbrains com webstorm https www jetbrains com webstorm download download thanks html
  • 问题解决:DatabaseMetaData.getTables()方法,返回了所有库中的表

    一 问题描述 DatabaseMetaData getTables 方法常常用来获取数据库中的所有表信息 但我想要获取我的本地数据库db test中的表信息 出现了错误 try Connection conn DBManager getCo
  • BigDecimal保留小数

    Java中BigDecimal取整方法 BigDecimal bd new BigDecimal 12 1 long l bd setScale 0 BigDecimal ROUND UP longValue 向上取整 long l bd
  • 【Docker存储】Docker容器的数据持久化

    Docker存储 Docker容器的数据持久化 一 Docker数据持久化方式 二 本次实践介绍 2 1 本次实践简介 2 2 本次实践环境介绍 三 容器的挂载目录 3 1 创建测试容器web01 3 2 查看容器信息 3 3 编辑测试文件
  • 单片机C语言中while(1)的问题

    单片机C语言的主程序 通常要用一个while 1 语句来让程序进入一个无限循环 目的是为了让程序一直保持在我们需要运行的情况下 虽然这种做法毋庸置疑 在网上还是有不少朋友有疑问 如果程序不加while 1 会出现什么情况 对于这种好学精神
  • Android开发——相册的访问、上传以及服务端对接

    相册的访问与图片保存 1 访问相册并上传到服务器 2 下载网络图片到相册 3 这里顺便分享一手后端的对接方法 4 生产环境资源配置 5 后端项目打包 一般Android开发需要涉及到本地相册的上传以及文件下载到相册 1 访问相册并上传到服务
  • redis必杀命令:发布订阅

    Redis 发布订阅 pub sub 是一种消息通信模式 发送者 pub 发送消息 订阅者 sub 接收消息 Redis 客户端可以订阅任意数量的频道 下图展示了频道 channel1 以及订阅这个频道的三个客户端 client2 clie