广告
返回顶部
首页 > 资讯 > 精选 >Redis中的发布订阅和事务怎么使用
  • 917
分享到

Redis中的发布订阅和事务怎么使用

2023-06-19 12:06:31 917人浏览 独家记忆
摘要

本篇内容主要讲解“Redis中的发布订阅和事务怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中的发布订阅和事务怎么使用”吧!发布订阅redis的发布订阅系统有点类似于我们生活中

本篇内容主要讲解“Redis中的发布订阅和事务怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Redis中的发布订阅和事务怎么使用”吧!

发布订阅

redis的发布订阅系统有点类似于我们生活中的电台,电台可以在某一个频率上发送广播,而我们可以接收任何一个频率的广播,Android中的broadcast也和这类似。

订阅消息的方式如下:

127.0.0.1:6379> SUBSCRIBE c1 c2 c3Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "c1"3) (integer) 11) "subscribe"2) "c2"3) (integer) 21) "subscribe"2) "c3"3) (integer) 3

这个表示接收c1,c2,c3三个频道传来的消息,发送消息的方式如下:

127.0.0.1:6379> PUBLISH c1 "hello redis!"(integer) 1

当c1这个频道上有消息发出时,此时在消息订阅控制台可以看到如下输出:

1) "message"2) "c1"3) "hello redis!"

在redis中,我们也可以使用模式匹配订阅,如下:

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

此时可以接收到所有以c开头的频道发来的消息。

tips

redis中的发布订阅系统在某些场景下还是非常好用的,但是也有一些问题需要注意:由于网络在传输过程中可能会遭遇断线等意外情况,断线后需要进行重连,然而这会导致断线期间的数据丢失。

事务

既然redis是一种NoSQL数据库,那它当然也有事务的功能,不过这里的事务和我们关系型数据库中的事务有一点点差异。
redis中事务的用法非常简单,我们通过MULTI命令开启一个事务,如下:

127.0.0.1:6379> MULTioK

在MULTI命令执行之后,我们可以继续发送命令去执行,此时的命令不会被立马执行,而是放在一个队列中,如下:

127.0.0.1:6379> set k1 v1QUEUED127.0.0.1:6379> set k2 v2QUEUED127.0.0.1:6379> set k3 v3QUEUED

当所有的命令都输入完成后,我们可以通过EXEC命令发起执行,也可以通过DISCARD命令清空队列,如下:

127.0.0.1:6379> EXEC1) OK2) OK3) OK

事务中的异常情况

redis中事务的异常情况总的来说分为两类:
1.进入队列之前就能发现的错误,比如命令输错;
2.执行EXEC之后才能发现的错误,比如给一个非数字字符加1;

那么对于这两种不同的异常,redis中有不同的处理策略。对于第一种错误,服务器会对命令入队失败的情况进行记录,并在客户端调用 EXEC 命令时,拒绝执行并自动放弃这个事务(这个是2.6.5之后的版本做法,之前的版本做法小伙伴可以参考官方文档)。如下:

127.0.0.1:6379> MULTIOK127.0.0.1:6379> set kv1 v1QUEUED127.0.0.1:6379> set k2 v2QUEUED127.0.0.1:6379> set k3 v3 3 3QUEUED127.0.0.1:6379> set k4 v4QUEUED127.0.0.1:6379> EXEC1) OK2) OK3) (error) ERR syntax error4) OK127.0.0.1:6379> keys *1) "k4"2) "k2"3) "kv1"

而对于第二种情况,redis并没有对它们进行特别处理, 即使事务中有某个/某些命令在执行时产生了错误, 事务中的其他命令仍然会继续执行。如下:

127.0.0.1:6379> MULTIOK127.0.0.1:6379> set k1 vvQUEUED127.0.0.1:6379> INCR k1QUEUED127.0.0.1:6379> EXEC1) OK2) (error) ERR value is not an integer or out of range127.0.0.1:6379> GET k1"vv"

不同于关系型数据库,redis中的事务出错时没有回滚,对此,官方的解释如下:

Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令用在了错误类型的键上面:这也就是说,从实用性的角度来说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中。因为不需要对回滚进行支持,所以 Redis 的内部可以保持简单且快速。

WATCH命令

事务中的WATCH命令可以用来监控一个key,通过这种监控,我们可以为redis事务提供(CAS)行为。 如果有至少一个被WATCH监视的键在EXEC执行之前被修改了,那么整个事务都会被取消,EXEC返回nil-reply来表示事务已经失败。如下:

Redis中的发布订阅和事务怎么使用  

通过unwatch命令,可以取消对一个key的监控,如下:

Redis中的发布订阅和事务怎么使用  

到此,相信大家对“Redis中的发布订阅和事务怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Redis中的发布订阅和事务怎么使用

本文链接: https://www.lsjlt.com/news/296127.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中的发布订阅和事务怎么使用
    本篇内容主要讲解“Redis中的发布订阅和事务怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中的发布订阅和事务怎么使用”吧!发布订阅redis的发布订阅系统有点类似于我们生活中...
    99+
    2023-06-19
  • Redis中发布订阅及事务的知识点整理
    这篇文章主要讲解了“Redis中发布订阅及事务的知识点整理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis中发布订阅及事务的知识点整理”吧!一、Re...
    99+
    2022-10-18
  • 怎么利用Jedis实现Redis的订阅与发布
    怎么利用Jedis实现Redis的订阅与发布?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Redis发布订阅Redis发布订阅是一种消息通信模式,发送者通...
    99+
    2023-05-31
    redis jedis
  • Redis发布订阅演示、事务演示、持久化的方法
    小编给大家分享一下Redis发布订阅演示、事务演示、持久化的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文章目录一、Red...
    99+
    2022-10-18
  • redis怎么实现队列阻塞、延时、发布和订阅
    这篇“redis怎么实现队列阻塞、延时、发布和订阅”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“redis怎么实现队列阻塞、...
    99+
    2023-07-02
  • SpringBoot Redis 发布订阅模式(Pub/Sub)的具体使用
    目录Redis命令行下使用发布订阅 publish 发布 subscribe 订阅 SpringBoot中使用Redis的发布订阅功能 发布者 订阅者 消息监听容器 注意:redis...
    99+
    2022-11-12
  • python中sub-pub机制怎么实现Redis的订阅与发布
    本篇内容介绍了“python中sub-pub机制怎么实现Redis的订阅与发布”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先介绍一下red...
    99+
    2023-07-05
  • 使用python实现mqtt的发布和订阅
     使用python编写程序进行测试MQTT的发布和订阅功能。首先要安装:pip install paho-mqtt 我的MQTT部署在阿里云的服务器上面,所以我在本机上编写了python程序进行测试。然后在shell里面重新打开一个终端,...
    99+
    2023-01-31
    python mqtt
  • PHP实现redis订阅和发布(用于异步任务处理)
    1.概念名称及含义channel 频道:生产者和消费者直接操作的对象publish 生产者:向channel发送消息subscribe 消费者:订阅一个或多个channelpsubscribe 消费者:匹配订阅一个或多个chann...
    99+
    2022-04-26
    PHP实现redis订阅和发布(用于异步任务处理)
  • 怎么用redis发布订阅方式实现简易的消息系统
    这篇文章主要讲解了“怎么用redis发布订阅方式实现简易的消息系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用redis发布订阅方式实现简易的消息系统”吧!I. 基本使用1. 配置我...
    99+
    2023-06-19
  • JavaScript怎么利用发布订阅模式编写事件监听函数
    这篇“JavaScript怎么利用发布订阅模式编写事件监听函数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScri...
    99+
    2023-07-06
  • thinkphp的事件绑定、监听和订阅怎么使用
    这篇文章主要介绍了thinkphp的事件绑定、监听和订阅怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇thinkphp的事件绑定、监听和订阅怎么使用文章都会有所收获,下面我们一起来看看吧。事件是什么事件...
    99+
    2023-06-30
  • Vue组件中事件总线和消息发布订阅的示例分析
    小编给大家分享一下Vue组件中事件总线和消息发布订阅的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介主要介绍事件总线的定义和编写方法和Vue是如何实现...
    99+
    2023-06-29
  • 怎么使用Node.js的内置模块event实现发布订阅模式
    这篇文章主要介绍了怎么使用Node.js的内置模块event实现发布订阅模式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Node.js的内置模块event实现发布订阅...
    99+
    2022-10-19
  • 一文浅析vue中消息订阅与发布的使用方法
    什么是消息订阅与发布?怎么使用?下面本篇文章给大家介绍一下vue中消息订阅与发布的使用方法,希望对大家有所帮助!1.什么是消息订阅与发布消息订阅与发布是一种组件间通信的方式,适用于任意组件间通信。能更好的实现组件间通信(消息订阅与发布就像是...
    99+
    2023-05-14
    Vue
  • Swoole和Workerman的消息订阅与发布在PHP与MySQL中的应用场景
    一、背景介绍在许多应用中,需要实现实时消息推送或事件监听,以及分布式任务调度等功能。传统的PHP开发方式通常采用轮询的方式,不仅效率低下,而且占用大量的系统资源。而Swoole和Workerman则可以通过异步、非阻塞的方式提供高性能的消息...
    99+
    2023-10-21
    消息订阅与发布 (Publish-Subscribe) Swoole和Workerman PHP与MySQL应用场景
  • 如何使用Redis和C#开发分布式事务功能
    如何使用Redis和C#开发分布式事务功能引言分布式系统的开发中,事务处理是一项非常重要的功能。事务处理能够保证在分布式系统中的一系列操作要么全部成功,要么全部回滚。Redis是一种高性能的键值存储数据库,而C#是一种广泛应用于开发分布式系...
    99+
    2023-10-22
    C# redis 分布式事务
  • redis中事务命令的介绍和使用
    这篇文章将为大家详细讲解有关redis中事务命令的介绍和使用,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、概述:Redis 事务的本质是一组命令的集合。事务支持一次执...
    99+
    2022-10-18
  • ThinkPHP中的事务怎么使用
    今天小编给大家分享一下ThinkPHP中的事务怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、事务的概念事务是一系...
    99+
    2023-07-05
  • 怎么使用IDEA中的Redis插件连接Redis服务器
    本篇内容主要讲解“怎么使用IDEA中的Redis插件连接Redis服务器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用IDEA中的Redis插件连接Redis服务器”吧!IDEA中的Re...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作