问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Redis的基本使用(二) 消息队列

发布网友 发布时间:2022-12-24 18:10

我来回答

1个回答

热心网友 时间:2023-10-09 18:25

使用消息中间件的时候,并非每次都需要非常专业的消息中间件,假如只有一个消息队列,只有一个消费者,那就没有必要去使用专业的消息中间件,这种情况可以直接使用 Redis 来做消息队列。

Redis 的消息队列不是特别专业,他没有很多高级特性,适用简单的场景,如果对于消息可靠性有着极高的追求,那么不适合使用 Redis 做消息队列。

Redis 做消息队列,使用它里边的 List 数据结构就可以实现,使用 lpush/rpush 操作来实现入队,然后使用 lpop/rpop 来实现出队。

在客户端(例如 Java 端),我们会维护一个死循环来不停的从队列中读取消息,并处理,如果队列中有消息,则直

接获取到,如果没有消息,就会陷入死循环,直到下一次有消息进入,这种死循环会造成大量的资源浪费,这个时候,

可以使用之前讲的 blpop/brpop 。

blpop 阻塞式的弹出,相当于 lpop 的阻塞版。

延迟队列可以通过 zset 来实现,因为 zset 中有一个 score,我们可以把时间作为 score,将 value 存到redis 中,然后通过轮询的方式,去不断的读取消息出来。

首先,如果消息是一个字符串,直接发送即可,如果是一个对象,则需要对对象进行序列化,这里我们
使用 JSON 来实现序列化和反序列化。

首先在项目中,添加 JSON 依赖:

接下来,构造一个消息对象:

接下来封装一个消息队列:

测试:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
锅炉切圆直径调整 为什么我打开excel后是灰色的? 有没有什么值得推荐的投资港股的QDII基金? - 知乎 win10电脑屏幕亮度调不了怎么办 考焊工证具体怎么操作 广汽传祺是丰田技术吗 广汽传祺与广汽丰田有关系吗 怎样才能让不愿写作业的孩子听话? 上初中不写作业不想学习的孩子应该如何管教? 出生在2020年农历七月十二日的宝宝怎么取名有内涵? 多哈回合谈判各方呼吁 甘肃庆阳宁县有没有菜鸟驿站有没有人知道? 甘肃省庆阳市庆城县桐川乡铜川乡有没有菜鸟驿站? 华亭麻池小区莱鸟驿站在哪 视角锁定怎么解除 lcd_10编码应用的意义包括 怎么查个人信誉度? 嘉兴骏川物流有限公司怎么样? 嘉兴市万润集装箱运输有限公司怎么样? 注销户口后医保还可以报吗 12寸wafer厚度 中国共产党第一个正式文献是 统帅热水器温度旋钮滑丝 微信界面一半黑一半白 如何自己设计室内装修图 燃气热水器和燃气灶是分两次安装吗 水利水电高级工程师评审条件? 给排水高级职称评审条件? 治疗膝关节病的方法,中医治疗好还是西医治疗好呢 洗衣机一个方向转怎么回事 刘姓女宝宝起名1680个 Redis的简易使用 如何连接redis Redis应该怎么使用 十万元贷款一年利息12388高吗 荣耀note10下拉怎么变成了搜索框 50斤银子相当于多少钱 50两银子等于宋朝多少贯银子 给小孩炖汤用什么鸡好 502胶水会腐蚀性螺丝吗 梦见自己过状元桥 你们知道天水吗?? 苹果12怎么截屏 龙城天水的介绍 天水世家是现在哪个城市 天水县的介绍 天水是几线城市,天水属于几线城市 七甲社龙舟赛——端午节,赛龙舟 二次函数 高中数学 求详解 请问他是哪位卡通人物 叫什么 QQ空间背景下雨怎么弄