当前位置:网站首页>Redis队列
Redis队列
2022-06-12 06:01:00 【心寒丶】
Redis实现任务队列 BRPOP
BRPOP命令和RPOP命令相似,唯一的区别是当列表中没有元素时BRPOP命令会一直阻塞住连接,直到有新元素加入。
BRPOP命令接收两个参数,第一个是键名,第二个是超时时间,单位是秒。当超过了此时间仍然没有获得新元素的话就会返回nil。上例中超时时间为"o",表示不限制等待的时间,即如果没有新元素加入列表就会永远阻塞下去。当获得一个元素后 BRPOP命令返回两个值,分别是键名和元素值。
除了BRPOP命令外,Redis还提供了BLPOP,和 BRPOP的区别在与从队列取元素时BLPOP会从队列左边取。具体可以参照工POP理解。
redis-cli实例1 :输入 BRPOP开启等待:

redis-cli实例2:向testqueue中写入数据:

redis-cli实例1 :返回数据:

发布/订阅模式PUBLISH
“发布/订阅”模式中包含两种角色,分别是发布者和订阅者。订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。
发布者发布消息的命令是 PUBLISH,用法是PUBLISH channel message,这样消息就发出去了。PUBLISH命令的返回值表示接收到这条消息的订阅者数量。如果没有客户端订阅channel则返回0。发出去的消息不会被持久化,也就是说当客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的就收不到了。订阅频道的命令是SUBSCRIBE,可以同时订阅多个频道,用法是 SUBSCRIBEchannel [channel ...]。
redis-cli实例1 :用来订阅channelTest

进入订阅状态后客户端可能收到3种类型的回复。每种类型的回复都包含3个值,第一个值是消息的类型,根据消息类型的不同,第二、三个值的含义也不同。消息类型可能的取值有以下3个。
(1) subscribe。表示订阅成功的反馈信息。第二个值是订阅成功的频道名称,第三个值是当前客户端订阅的频道数量。
(2) message。这个类型的回复是我们最关心的,它表示接收到的消息。第二个值表示产生消息的频道名称,第三个值是消息的内容。
(3) unsubscribe。表示成功取消订阅某个频道。第二个值是对应的频道名称,第三个值是当前客户端订阅的频道数量,当此值为0时客户端会退出订阅状态,之后就可以执行其他非“发布/订阅”模式的命令了。
redis-cli实例2 :向channelTest写入一条消息,因为redis-cli实例1已经订阅,所以返回1

redis-cli实例1:自动收到消息

使用UNSUBSCRIBE命令可以取消订阅指定的频道,用法为UNSUBSCRIBE [ channel[ channel ...]],如果不指定频道则会取消订阅所有频道。
按照规则订阅SUBSCRIBE
除了可以使用SUBSCRIBE命令订阅指定名称的频道外,还可以使用PSUBSCRIBE命令订阅指定的规则。规则channel.?*可以匹配channel.1和channel.10,但不会匹配 channel.。
redis-cli实例3:订阅channelTes?*

redis-cli实例2:写入数据 返回2,因为 redis-cli1和 redis-cli3都订阅,因此发送两条

redis-cli实例3:收到信息

第一个值表示这条消息是通过PSUBSCRIBE命令订阅频道而收到的,第二个值表示订阅时使用的通配符,第三个值表示实际收到消息的频道命令,第四个值则是消息内容。
PUNSUBSCRIBE命令可以退订指定的规则,用法是 PUNSUBSCRIBE [pattern[pattern ...]],如果没有参数则会退订所有规则。
边栏推荐
- 数据库实验三:数据查询
- China's elastic belt market trend report, technical dynamic innovation and market forecast
- jpg格式与xml格式文件分离到不同的文件夹
- Who is more fierce in network acceleration? New king reappeared in CDN field
- Login authentication filter
- 姿态估计之2D人体姿态估计 - PifPaf:Composite Fields for Human Pose Estimation
- Automatic annotation of target detection based on lffd model to generate XML file
- Leetcode-1604. Warning people who use the same employee card more than or equal to three times within one hour
- flex/fixed上中下(移動端)
- 交叉编译libev
猜你喜欢

The application could not be installed: INSTALL_ FAILED_ TEST_ ONLY

A month's worth of DDD will help you master it

Who is more fierce in network acceleration? New king reappeared in CDN field

sqlite交叉编译动态库

Conversion of Halcon 3D depth map to 3D image

Execute sh script to prompt "[[: not found" solution. The difference between Bash and sh

Makefile文件编写快速掌握

Redis transaction

Leetcode simple problem: converting an integer to the sum of two zero free integers

Individual application for ov type SSL certificate
随机推荐
Un mois de DDD hépatique.
Redis persistence
BlockingQueue interface introduction
Annotation configuration of filter
Redis transaction
Automatic annotation of target detection based on lffd model to generate XML file
Leetcode-1705. Maximum number of apples to eat
Idea common configuration
IO stream introduction
Unity VSCode不能跳转到定义
nus_data_handler源码解读结构体等数据类型
Introduction to thread pool: ThreadPoolExecutor
EBook editing and deleting
Review notes of naturallanguageprocessing based on deep learning
Database experiment I: data definition experiment guide
Flex/fixed upper, middle and lower (mobile end)
Lock and reentrankload
Brief summary of software project architecture
Research Report on water sports shoes industry - market status analysis and development prospect forecast
肝了一個月的 DDD,一文帶你掌握