Redis发布订阅和事物笔记

2023-11-18

Redis 发布订阅

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

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

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

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

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

假设当前是clien2订阅wwChat

127.0.0.1:6379> SUBSCRIbe wwChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "wwChat"
3) (integer) 1

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

127.0.0.1:6379> PUBLISH wwChat "hello im zww"
(integer) 1
127.0.0.1:6379> PUBLISH wwChat "this is Learning notes"
(integer) 1

我们再来看client2有什么变化,新接收了两条信息

127.0.0.1:6379> SUBSCRIbe wwChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "wwChat"
3) (integer) 1
1) "message"
2) "wwChat"
3) "hello im zww"
1) "message"
2) "wwChat"
3) "this is Learning notes"

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 事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

来个实例: 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET wTransaction "im transacion"
QUEUED
127.0.0.1:6379> get wTransaction
QUEUED
127.0.0.1:6379> SADD book_name "redis" "programmer"
QUEUED
127.0.0.1:6379> SMEMBERS book_name
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) "im transacion"
3) (integer) 2
4) 1) "programmer"
   2) "redis"

Redis事物命令:

1    DISCARD 
取消事务,放弃执行事务块内的所有命令。
2    EXEC 
执行所有事务块内的命令。
3    MULTI 
标记一个事务块的开始。
4    UNWATCH 
取消 WATCH 命令对所有 key 的监视。
5    WATCH key [key ...] 
监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

 

转载于:https://www.cnblogs.com/zhaww/p/8483464.html

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

Redis发布订阅和事物笔记 的相关文章

  • python学习笔记 - 如何从几千个文件中寻找出指定的内容

    今天在处理数据时遇到这么个问题 如何从几千个txt文件中找到我想要的内容呢 这是我的实现思路 读取文件 选中指定的内容段 在新路径下保存内容段并命名为之前的文件名 以下是用python实现的代码 有详细注释 usr bin env pyth
  • Selenium Python 教程

    Selenium Python 教程 准备工作 元素定位 控制浏览器操作 Webelement常用方法 鼠标操作 键盘事件 获取断言信息 等待页面加载完成 隐式等待 在不同的窗口和框架之间移动 警告框处理 下拉框选择 文件上传 cookie
  • 网络安全(黑客)自学建议一一附学习路线

    温馨提示 为了避免误入歧途 自学请优先看 网络安全法 下面是一些学习建议 1 多请教有经验的人 切忌钻牛角尖 特别是刚入门的什么都不了解的情况下 可能你花好几天研究的一个东西 人10分钟就能搞定 一定不要做闷葫芦 有问题多问 遇到问题不可怕
  • 机器视觉第二次大作业

    内容 给定图像 消除其中的周期性干扰 以下为处理过程 1 显示图像的傅里叶变换后的频谱和傅里叶变换对数所得的频谱 从图2 可以明显的看出周期性噪声在频谱上的分布 于是在低中高频段上都有分布 但是低 通部分较少 所以考虑使用低通滤波器 此部分
  • java学习笔记13--反射机制与动态代理

    本文地址 http www cnblogs com archimedes p java study note13 html 转载请注明源地址 Java的反射机制 在Java运行时环境中 对于任意一个类 能否知道这个类有哪些属性和方法 对于任
  • StyleGAN2 解释

    本文是 1 的译文 按照作者Connor Shorten 的说法 此博客讨论的是StyleGAN2的诸如weight demodulation path length regularization和去掉progressive growing
  • VS Code Remote基于docker的Python开发环境搭建,ssh免密登录

    win电脑 生产一对公钥与私钥 私钥在win 公钥pub在服务器 ssh keygen 服务器复制私钥和ssh配置 1 root用户进入服务器 cd ssh 复制win电脑上的 ssh id rsa pu到服务器 root ssh 目录下
  • 【const-指针-数组】

    文章目录 const const 数组 const 指针 最后 const const是constant的简写 它是用来定义常量 它限定一个变量不允许被改变 产生静态作用 修饰静态变量 const int a 3 int const a 3
  • ZYNQ 库函数学习之SPI

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约了芯片的管脚 同时为PCB的布局上节省空间 提供方便 正是出于这种简单易用的特性
  • 为了买车,我用Python把某帝给搞采集了。

    上班摸鱼看了2个星期车评 还是一头雾水 选合资还是国产 发动机cvt好还是双离合好 艾瑞泽5 GT动力足 但腰线和前脸让人吐槽 真的可靠吗 国产选长安逸动还是吉利帝豪 标志408出来了 还有艾瑞泽8很漂亮 看会视频吧 同质化严重 讲来将去就
  • 基于51单片机的智能晾衣架的设计与实现(源码+论文)_kaic

    摘要 随着社会和市场的变化 我国经济的快速发展和房地产行业的快速扩张 使得装修家居行业飞速发展 在行业高速发展的同时 消费者家居智能化要求也在日益发展 随着科学技术的进步和电子技术的发展 单片机作为智能控制芯片 越来越多的应用到生活中的个各
  • Verilog实例-AMBA(AHB)协议

    目录 一 简介 1 1 AHB 1 2 signal list 1 3 Bus interconnection 总线互联 1 4 Overview of AMBA AHB operation 1 4 1 Basic transfer 1 4
  • ElasticSearch6.x 基于SpringBoot 实现ElasticSearch的统计查询

    AggregationUtil java 实现elasticsearch 搜索引擎针对指定索引的max 最大值 min 最小值 sum 合计统计 avg 平均值统计 stats 基本统计 extendedStats 高级统计 cardina
  • 常见的笔试题之mysql

    MYSQL篇 mysql版本 5 7 安装文件 mysql installer community 5 7 11 0 msi 1 写出复制表的sql语句 例如employ为原表名 copytb为目标表名 语句如下 1 create tabl
  • ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序

    js定时器怎么写 就是在特定时间执行某段程序 复制代码 代码如下 function var handler function var timer setInterval handler 1000 var clear function cle
  • golang运算与循环等

    一 golang运算符 1 算术运算符 相加 相减 相乘 相除 求余 自增 自减 2 关系运算符 等于 不等于 gt 大于 lt 小于 gt 大于等于 lt 小于等于 3 位运算符 按位与运算符 是双目运算符 其功能是参与运算的两数各对应的
  • tkinter实现页面切换

    tkinter是python标准库的GUI组件 对于一些小脚本 完全够用 但是如果是复杂的逻辑界面 当然是啊pyqt更胜一筹 笔者用过wxpython pysimplegui 代码写完了 在打包的时候都会遇到各种各样的问题 而用tkinte
  • chatgpt赋能python:Python如何获取微信聊天记录:详细教程

    Python如何获取微信聊天记录 详细教程 在当前的数字时代 如何快速 便捷地获取信息是困扰每个人的问题 随着移动互联网的发展 微信成为了人们交流沟通的主要工具之一 在这样的背景下 如何获取微信聊天记录成为了一项非常重要的技能 在某些场合中
  • java与jsp的关系_浅谈servlet与jsp的关系

    servlet是用java语言编写的 是一个java类 主要功能是用来接受 处理客户端的请求 并把处理结果返回到客户端显示 Jsp是servlet发展后期的产物 在没有jsp之前 servlet利用输出流动态生成整个HTML页面 输出内容包
  • 数字人解决方案——实时对话数字人源码与环境配置

    前言 1 从技术角度来看 现在的数字人就是一个缝合怪 把各种技术点都整合在一起 用来实现直播 对话等数字人 技术流程大概如下图 其实最重要的一环应该属于LLM 大型语言模型 LLM相当于一个人的意识 如果没有LLM 这一套完全没有深度 2

随机推荐

  • 锁介绍名词解释&&Lock && synchronized

    各种锁名词解释及应用 一 名词解释 1 乐观锁 VS 悲观锁 2 自旋锁 VS 适应性自旋锁 3 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁 4 公平锁 VS 非公平锁 5 可重入锁 VS 非可重入锁 6 独享锁 VS 共享锁 二
  • QT学习经验之父子通信

    QT父子通信两种方式 第一种获取父部件 MainWindow par MainWindow parentWidget 第二种利用信号和槽 父发射带参数的信号给子 父部件中 定义 发射信号 子部件中 定义槽 连接信号和槽 connect pa
  • CTF-----RE练习题(二)

    学习打卡篇八 每天学习一点点 认识壳 在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序 它们一般都是先于程序运行 拿到控制权 然后完成它们保护软件的任务 由于这段程序和自然界的壳在功能上有很多相同的地方 所以就把这样的程序
  • 解决 Column count doesn‘t match value count at row 1 的可能思路

    今天遇到这个问题 Column count doesn t match value count at row 1 很明显说的是列不匹配 示例是 insert into user colum1 colum2 colum3 但是values是
  • 错题集 zabbix--yaml

    报错环境 一 ansible yaml root server1 vim Apcha yaml hosts mysql remote user root tasks name yum httpd yum name httpd name st
  • .NET 8发布首个RC,比.NET 7的超级快更快

    NET 8 发布了首个 RC 据称 RC 阶段会发布两个版本 正式版将于 2023 年 11 月 14 日至 16 日在 NET Conf 2023 上推出 NET 8 是长期支持 LTS 版本 将会获得 3 年技术支持 公告写道 此版本为
  • win服务器开虚拟空间,win虚拟空间如何实现301重定向

    对于个人站长来说 window服务器的国内虚拟空间并不陌生 它不像apache那样可以支持 强大的 htaccess文件 对于站长来说 301重定向更不陌生 基本的将不带www的域名301指向带www的域名 如何实现这步 网上一大堆资料没几
  • 网络地址和广播地址

    1 总述 IP地址使用32位二进数表示 每一个主机或路由器的接口都有全局唯一的IP地址 NAT是个例外 它由网络号 NetID 和主机号 HostID 组成 它可以分为五类 如下 2 地址划分 1 A类地址 其中A类地址的前8位是网络号 后
  • 【超级无敌详细的韩顺平java笔记】从入门到精通---四种进制介绍

    1 进制介绍 对于整数 有四种表示方式 二进制 0 1 满 2 进 1 以 0b 或 0B 开头 十进制 0 9 满 10 进 1 八进制 0 7 满 8 进 1 以数字 0 开头表示 十六进制 0 9 及 A 10 F 15 满 16 进
  • 【Docker】Docker-compose容器编排的使用

    怒目的在CentOS系统中部署安装Docker compose容器编排服务 使用Docker compose服务构建Python Web镜像和容器 1 安装Docker compose 1 通过实训平台进入到操作系统界面 在 后输入yum
  • Eclipse中配置apache(包括apache下载、环境配置,添加eclipse)

    一开始是项目出现错误 The superclass javax servlet http HttpServlet was not found on the Java Build Path 解决方法 就是添加apache 但是过程有很曲折 还
  • Python注释(多行注释和单行注释)用法详解

    注释 Comments 用来向用户提示或解释某些代码的作用和功能 它可以出现在代码中的任何位置 Python 解释器在执行代码时会忽略注释 不做任何处理 就好像它不存在一样 在调试 Debug 程序的过程中 注释还可以用来临时移除无用的代码
  • 第1194期机器学习日报(2017-12-25)

    机器学习日报 2017 12 25 使用深度学习构建先进推荐系统 近期33篇重要研究概述 机器之心Synced 2017十大突破性技术之增强学习 爱可可 爱生活 半监督学习在图像分类上的基本工作方式 机器之心Synced 为给定任务自动生成
  • OpenCV仿射变换实现——Python代码案例

    OpenCV仿射变换实现 Python代码案例 OpenCV是一个基于Python的开源计算机视觉库 可以帮助我们进行图像处理和计算机视觉方面的研究 其中 仿射变换是一种常见的图像处理方法 可以实现旋转 放大 缩小 平移等功能 本文将介绍如
  • APP渗透 之 脱壳

    前言 随着人们安全意识越来越加强 很多开发者逐渐开始加shell也就是壳 所以脱壳 砸壳还是很有必要会的 1 Frida是什么 Frida是一款易用的跨平Hook 工具 Java 层到 Native 层的 Hook 无所不能 是一种 动态
  • elementui的分页中的页面查看详情后返回当前页

    列表页 methods 改变页数 currentChange val this page currentPage val 缓存当前页码数 sessionStorage setItem currentPage val 调取表格列表接口 thi
  • 获取svg和svg内容的方法

    方法一 使用正则表达式 1 先找到div中包含的所有内容 2 然后用正则表达式匹配svg开头 svg结束的标签 var data window layout canvas html var content window svg html v
  • LeetCode-160. 相交链表

    这是一道真的非常巧妙的题 题解思路如下 如果让他们尾端队齐 那么从后面遍历就会很快找到第一个相交的点 但是逆序很麻烦 于是有一个巧妙的思路诞生了 如果让短的先走完自己的再走长的 长的走完走短的 他俩就会正好对齐 于是 Definition
  • JAVA主流压缩解压工具对比、用法与选取

    一 JAVA主流压缩工具 java util zip 说明 Java标准库提供的压缩与解压功能 包含在java util zip包中 通过ZipInputStream和ZipOutputStream可以实现ZIP格式的压缩与解压缩操作 适用
  • Redis发布订阅和事物笔记

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