[发明专利]一种基于redis实现消息实时性和持久化的方法及工具在审
申请号: | 202210024169.5 | 申请日: | 2022-01-04 |
公开(公告)号: | CN114491338A | 公开(公告)日: | 2022-05-13 |
发明(设计)人: | 李敏;迟钰沛 | 申请(专利权)人: | 浪潮软件股份有限公司 |
主分类号: | G06F16/957 | 分类号: | G06F16/957;G06F16/2455;H04L67/568 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 冯春连 |
地址: | 271000 山东省*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 redis 实现 消息 实时 持久 方法 工具 | ||
本发明公开一种基于redis实现消息实时性和持久化的方法及工具,涉及消息处理技术领域,其实现涉及redis和消息处理器,具体过程包括:消息发布方利用redis的发布模式向redis发送消息,同时,向消息处理器发送一个消息标记;消息处理器将消息标记发送至消息接收方;消息接收方接收消息标记,利用redis的订阅模式接收消息提醒,随后采用set轮询的方式去redis中获取未处理的消息,对获取消息进行消费,消费完成后,去redis中删除该消息;如果消息接收方获取消息时发生意外宕机,消息接收方重启服务后,会优先去redis中查询是否有未处理的消息,如果有,则对未处理的消息进行消费,不会出现消息丢失的情况。本发明可以实现消息的实时性和持久性,无需额外增加消息中间件。
技术领域
本发明涉及消息处理技术领域,具体的说是一种基于redis实现消息实时性和持久化的方法及工具。
背景技术
随着互联网技术的不断,缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。
在高并发场景下,由于服务端来不及同步处理数量过多的请求,可能导致请求堵塞。例如,大量的INSERT、UPDATE之类的请求同时到达服务端,在执行这些请求的过程中,会出现大量的行锁、表锁,甚至到最后,由于请求堆积过多,触发“too many connections”错误。在这类高并发场景下,通常使用缓存与消息中间件,但是这会增大实施部署的难度,增加对服务器性能的要求。
redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足,在有些场景下,只是需要极个别功能的消息功能,不想再引用专业的消息中间件比如rabbitMQ或者rocketMQ,使用redis是一个不错的选择。
如果使用redis的发布订阅模式,由于redis的订阅发布模式不会持久化消息,如果消息接收方服务宕机了,消息发送方发送的消息就会丢失,会影响正常的业务运行。
如果使用set轮询方式,这种方式是利用缓存来实现模块间解耦的常见方式,消息发送方将要发送的消息存入redis,而消息接收方就会起一个线程不断的循环redis中的消息,如果有消息就处理,如果没有就等待1秒再次循环此过程。但这个方案的缺点也很明显,如果每次循环等待的时间过长,就会造成消息的延时,如果每次循环等待的时间过短,就会不断的调用redis轮询key值,如果这样的业务多了就会造成资源的浪费,影响性能。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于redis实现消息实时性和持久化的方法及工具,以通过redis的发布订阅模式和set轮询相结合的方式,在不额外增加消息中间件的情况下,实现消息的实时性和持久性。
首先,本发明公开保护一种基于redis实现消息实时性和持久化的方法,解决上述技术问题采用的技术方案如下:
一种基于redis实现消息实时性和持久化的方法,该方法基于redis的发布订阅模式和set轮询方式,实现过程包括:
消息发布方利用redis的发布模式向redis发送消息,同时,向消息处理器发送一个消息标记;
消息处理器将消息标记发送至消息接收方;
消息接收方接收消息标记,利用redis的订阅模式接收消息提醒,随后采用set轮询的方式去redis中获取未处理的消息,对获取消息进行消费,消费完成后,去redis中删除该消息。
可选的,Redis接收到来自消息发布方的消息后,将消息以key-value的形式进行存储。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件股份有限公司,未经浪潮软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210024169.5/2.html,转载请声明来源钻瓜专利网。