Redis系列(五):消息队列
消息队列已经成为现在互联网服务端的标配组件,现在比较常用的消息中间件有RabbitMQ、Kafka、RocketMQ、ActiveMQ。说出来你可能不信,Redis作为一个缓存中间件,居然也提供了消息队列的功能。
Redis提供的消息队列功能是发布/订阅模型,它引入了channel的概念,即订阅者订阅了某个channel,当有发布者往这个channel中发布消息,订阅者就能收到。这和读者订阅杂志的原理是一样的,读者相当于订阅者,一间杂志社会有多种杂志,当读者订阅了其中一种杂志后,每当杂志发售日,杂志社就会发布杂志,读者就能收到了。
看一下Redis提供的命令
- subscribe
完整命令参数为subscribe channel [channel ...]
订阅一个或多个channel
127.0.0.1:6379> subscribe ch1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ch1"
3) (integer) 1
订阅名称为ch1的channel,成功后会停止在此界面,等待接收消息。结果的1、2、3分别表示行为、channel名称和结果,比如上面是订阅了ch1,1个订阅成功
- publish
完整命令参数为publish channel message
向channel发布一条message的消息
保持上面的例子的终端不要动,另外打开一个终端窗口,然后连接redis,执行以下的命令
127.0.0.1:6379> publish ch1 Hello
(integer) 1
在新打开的终端发布向名称为ch1的channel发布一条内容为Hello的消息,成功后可以看到原来的终端界面收到了这条消息
127.0.0.1:6379> subscribe ch1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ch1"
3) (integer) 1
1) "message"
2) "ch1"
3) "Hello"
第一个1、2、3是订阅时返回的结果,第二个1、2、3是收到了消息,channel名为ch1,内容是Hello。
- unsubscribe
完整命令是unsubscribe [channel [channel ...]]
退订指定的channel,channel是可选的,如果不指定channel,会退订所有的channel。
- psubscribe
完整命令参数为psubscribe pattern [pattern ...]
订阅给定的模式
这个命令和subscribe命令一样都是订阅,但这个参数是一个模式。这里的pattern支持以下三种方式:
h?llo: 订阅hello、hallo和hxllo,意思是?代表一个字符
h*llo:订阅hllo和heeeello,意思是*代表任意个字符
h[ae]llo:订阅hello和hallo,但是不订阅hillo,意思是只能是[ ]内的一个字符,[ ]也支持[a-z]的写法,代表字母a到字母z的任意一个字符。
如果使用过正则表达式就很容易理解。
- punsubscribe
完整命令参数为punsubscribe [pattern [pattern ...]]
取消订阅给定的模式,不指定pattern表示取消所有的订阅。pattern参数的含义和psubscribe完全一致。
Redis系列(五):消息队列的更多相关文章
- Redis系列(三)--消息队列、排行榜等
Redis命令执行生命周期: 发送命令--->排队(单线程)--->执行命令--->返回结果 慢查询: 只是针对命令执行阶段 慢查询日志通过一个固定长度的FIFO queue,这个q ...
- Redis+php-resque实现消息队列
服务器硬件配置 Dell PowerEdge R310英特尔单路机架式服务器 Intel Xeon Processor X3430 2.4GHz, 8MB Cache 8GB内存(2 x 4GB) ...
- 如何使用NODEJS+REDIS开发一个消息队列
作者: RobanLee 原创文章,转载请注明: 萝卜李 http://www.robanlee.com MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应 ...
- 进程间通信系列 之 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
进程间通信系列 之 概述与对比 http://blog.csdn.net/younger_china/article/details/15808685 进程间通信系列 之 共享内存及其实例 ...
- Delayer 基于 Redis 的延迟消息队列中间件
Delayer 基于 Redis 的延迟消息队列中间件,采用 Golang 开发,支持 PHP.Golang 等多种语言客户端. 参考 有赞延迟队列设计 中的部分设计,优化后实现. 项目链接:http ...
- Spring Cloud(7):事件驱动(Stream)分布式缓存(Redis)及消息队列(Kafka)
分布式缓存(Redis)及消息队列(Kafka) 设想一种情况,服务A频繁的调用服务B的数据,但是服务B的数据更新的并不频繁. 实际上,这种情况并不少见,大多数情况,用户的操作更多的是查询.如果我们缓 ...
- php和redis怎么实现消息队列
把瞬间服务器的请求处理换成异步处理,缓解服务器的压力,实现数据顺序排列获取.本文主要和大家分享php和redis如何实现消息队列,希望能帮助到大家. redis实现消息队列步骤如下: 1).redis ...
- Redis 学习笔记(六)Redis 如何实现消息队列
一.消息队列 消息队列(Messeage Queue,MQ)是在分布式系统架构中常用的一种中间件技术,从字面表述看,是一个存储消息的队列,所以它一般用于给 MQ 中间的两个组件提供通信服务. 1.1 ...
- [转载] 基于Redis实现分布式消息队列
转载自http://www.linuxidc.com/Linux/2015-05/117661.htm 1.为什么需要消息队列?当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消 ...
- [2017-10-25]Abp系列——集成消息队列功能(基于Rebus.Rabbitmq)
本系列目录:Abp介绍和经验分享-目录 前言 由于提交给ABP作者的集成消息队列机制的PR还未Review完成,本篇以Abplus中的代码为基准来介绍ABP集成消息队列机制的方案. Why 为什么需要 ...
随机推荐
- Windows本地安全策略
目录 本地安全策略 密码策略 账户策略 审核策略 用户权限分配 安全选项 本地安全策略 安全策略是影响计算机安全性的安全设置的组合.可以利用本地安全策略来编辑本地计算机上的帐户 系统安全策略包括下面的 ...
- 网站指纹识别工具Whatweb的使用
目录 whatweb 一些常见的Whatweb的扫描 常规扫描 批量扫描 详细回显扫描 扫描强度等级控制 快速本地扫描(扫描内网的主机) 将扫描结果导出至文件内 whatweb whatweb 是ka ...
- UVA11389巴士司机问题
题意: 有n个巴士司机,然后有2n个活,其中有n个是上午,n个是下午,每个自己都要选择一个上午的和一个下午的,每个活都有驾驶距离,如果一个司机每天的驾驶距离大于d,那么超出的部分就要每个单 ...
- Win10 ntoskrnl.exe蓝屏解决
主机一直用的是无线网卡,装Win10下载驱动.不管是Window10自己更新,还是通过驱动人生.驱动精灵等安装的Killer网卡驱动,均日常导致蓝屏. 状态是这样的:玩游戏蓝屏.检测系统蓝屏.清垃圾蓝 ...
- 插入排序——Python实现
插入排序Python实现 # -*- coding: utf-8 -*- # @Time : 2019/10/28 20:47 # @Author : yuzhou_1shu # @Email : y ...
- Day003 彻底搞懂++、--
彻底搞懂++.-- ++.--都是一目运算符 b=a++(把a的值先赋给b,a再自增1) b=++a(a先自增1,再赋给b) 通过一个例子理解 int a=1; int b=a++; int c=++ ...
- JavaScript实现减速返回顶部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 微信小程序中的常见弹框
显示加载中的提示框 wx.showLoading() 当我们正在在进行网络请求时,常常就需要这个提示框 手动调用wx.hideLoading()方法才能够关闭这个提示框,通常在数据请求完毕时就应该关闭 ...
- .NET之WebAPI
介绍 通过一个简单的项目,总结一下常用的几种WebApi编写方式以及请求方式. 本文示例代码环境:vs2019.net5.MySQL 正文前准备 新创建了一个.Net5 WebAPI程序,安装组件 & ...
- 手写Promise中then方法返回的结果或者规律
1. Promise中then()方法返回来的结果或者规律 我们知道 promise 的 then 方法返回来的结果值[result]是由: 它指定的回调函数的结果决定的 2.比如说下面这一段代码 l ...