CN116578591A - 一种消息存储的方法及终端 - Google Patents
一种消息存储的方法及终端 Download PDFInfo
- Publication number
- CN116578591A CN116578591A CN202310422594.4A CN202310422594A CN116578591A CN 116578591 A CN116578591 A CN 116578591A CN 202310422594 A CN202310422594 A CN 202310422594A CN 116578591 A CN116578591 A CN 116578591A
- Authority
- CN
- China
- Prior art keywords
- message
- user
- detail information
- storing
- redis cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000004590 computer program Methods 0.000 claims description 8
- 230000010365 information processing Effects 0.000 abstract description 7
- 238000000926 separation method Methods 0.000 abstract description 7
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/043—Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种消息存储的方法及终端,将待推送消息对应用户的消息明细信息均存储在redis集群中,若要推送的用户不处于在线状态,则将该用户的消息明细信息存储至redis集群个人收件箱中,生成离线信息并将其存储至数据库中。以此方式,通过redis集群保存所有的消息明细信息,对离线消息明细采用缓存处理,之后存储至数据库,实现离线的消息明细信息处理和入库的分离,通过该消息存储方法提高了后续消息推送的效率。
Description
技术领域
本发明涉及消息处理技术领域,特别涉及一种消息存储的方法及终端。
背景技术
在现在很多系统或者APP中,都存在消息推送功能。通过在云端和客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用推送实时消息的服务,帮助开发者有效地拉动用户活跃。而所有的消息推送都需要有后台服务器进行相关的支持才能够实现,保持长连接才能够实现消息发送与接收的实时性。
由于需要长期保持服务端和客户端的通信,需要在客户端和服务端中保持一个长连接,如果客户端的数量很多的话,就需要服务端保持很多数目的长连接。而实际情况是,一般APP系统的客户端数量会达到几十上百万之多,如果这么多的连接都连到同一台服务器上,会给该台服务器造成很大的压力,导致该服务器不可使用,出现宕机或者其他问题。
在推送系统中,存在在线推送以及离线推送的情况。在推送系统中,客户端与服务端成功建立了长连接,此时发送消息为在线推送,直达客户端。若客户端断网以及其他情况不在线,则服务端一般通过数据库来记录每个人的离线消息,一般记录形式为userId,msgId或者userId,msgId_time这种形式。通常称之为类似个人收件箱的模式。
在一般的推送系统中,针对消息的发送机制为,根据一条消息生成对应用户数量的消息明细信息,并保存所有消息明细至数据库中,最后,针对所有的在线用户进行相关消息的推送工作。如果用户在线则直接推送。如果不在线,则为离线消息,修改数据库状态。此时就存在生成的离线消息记录数据库会较慢,造成推送效率较低的问题。
发明内容
本发明所要解决的技术问题是:提供一种消息存储的方法及终端,能够提高离线消息的推送效率。
为了解决上述技术问题,本发明采用的技术方案为:
一种消息存储的方法,包括步骤:
接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中;
若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种消息存储的终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中;
若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
本发明的有益效果在于:将待推送消息对应用户的消息明细信息均存储在redis集群中,若要推送的用户不处于在线状态,则将该用户的消息明细信息存储至redis集群个人收件箱中,生成离线信息并将其存储至数据库中。以此方式,通过redis集群保存所有的消息明细信息,对离线消息明细采用缓存处理,之后存储至数据库,实现离线的消息明细信息处理和入库的分离,通过该消息存储方法提高了后续消息推送的效率。
附图说明
图1为本发明实施例的一种消息存储的方法的流程图;
图2为本发明实施例的一种消息存储的终端的示意图;
标号说明:
1、一种消息存储的终端;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,本发明实施例提供了一种消息存储的方法,包括步骤:
接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中;
若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
从上述描述可知,本发明的有益效果在于:将待推送消息对应用户的消息明细信息均存储在redis集群中,若要推送的用户不处于在线状态,则将该用户的消息明细信息存储至redis集群个人收件箱中,生成离线信息并将其存储至数据库中。以此方式,通过redis集群保存所有的消息明细信息,采用缓存对离线消息明细进行处理,同时将生成的离线消息存储至数据库,实现离线的消息明细信息处理和入库的分离,通过该消息存储方法提高了后续消息推送的效率。
进一步地,若所述待推送消息对应的用户不处于在线状态,之后包括:
当所述用户处于在线状态后拉取数据库中的离线消息并从所述redis集群个人收件箱中获取消息明细信息时,删除所述redis集群个人收件箱中的消息明细信息以及所述数据库中的离线消息。
由上述描述可知,当用户上线时,从数据库中拉取离线消息时,直接从redis集群中获取对应的消息明细信息,之后删除redis集群以及数据库中对应的数据,以此方式,实现消息明细信息处理以及离线消息入库的分离,提高了消息推送的效率。
进一步地,将所述用户对应的消息明细信息存储至redis集群个人收件箱中包括:
按照用户的唯一标识查找用户对应的redis集群个人收件箱,并将所述用户对应的消息明细信息存储至所述redis集群个人收件箱中;
所述用户处于在线状态并从所述redis集群个人收件箱中获取消息明细信息包括:
所述用户根据唯一标识拉取对应的redis集群个人收件箱,从所述redis集群个人收件箱中获取所述用户对应的所有消息明细信息。
由上述描述可知,redis集群是进行缓存存储的,能够一次性的根据用户的唯一标识拉取该用户下的所有消息明细信息。
进一步地,所述生成离线消息并存储至数据库包括:
在将述用户对应的消息明细信息存储至redis集群个人收件箱中的同时,生成一个与所述消息明细信息对应的离线消息,异步将所述离线消息存储至数据库中。
由上述描述可知,在采用缓存对离线消息明细进行处理的同时,异步将生成的离线消息存储至数据库,实现离线的消息明细信息处理和入库的分离,提高消息推送的效率。
进一步地,还包括:
若所述待推送消息对应的用户处于在线状态,则通过与用户之间建立的长连接直接发送所述用户对应的消息明细信息。
由上述描述可知,在线和离线的明细均生成存放至redis集群中,所有的消息推送均从redis集群中查询发送,以此方式,采用缓存的方式进行消息处理,能够进一步提高消息推送的效率。
请参照图2,本发明另一实施例提供了一种消息存储的终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中;
若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
从上述描述可知,本发明的有益效果在于:将待推送消息对应用户的消息明细信息均存储在redis集群中,若要推送的用户不处于在线状态,则将该用户的消息明细信息存储至redis集群个人收件箱中,生成离线信息并将其存储至数据库中。以此方式,通过redis集群保存所有的消息明细信息,采用缓存对离线消息明细进行处理,同时将生成的离线消息存储至数据库,实现离线的消息明细信息处理和入库的分离,通过该消息存储方法提高了后续消息推送的效率。
进一步地,若所述待推送消息对应的用户不处于在线状态,之后包括:
当所述用户处于在线状态后拉取数据库中的离线消息并从所述redis集群个人收件箱中获取消息明细信息时,删除所述redis集群个人收件箱中的消息明细信息以及所述数据库中的离线消息。
由上述描述可知,当用户上线时,从数据库中拉取离线消息时,直接从redis集群中获取对应的消息明细信息,之后删除redis集群以及数据库中对应的数据,以此方式,实现消息明细信息处理以及离线消息入库的分离,提高了消息推送的效率。
进一步地,将所述用户对应的消息明细信息存储至redis集群个人收件箱中包括:
按照用户的唯一标识查找用户对应的redis集群个人收件箱,并将所述用户对应的消息明细信息存储至所述redis集群个人收件箱中;
所述用户处于在线状态并从所述redis集群个人收件箱中获取消息明细信息包括:
所述用户根据唯一标识拉取对应的redis集群个人收件箱,从所述redis集群个人收件箱中获取所述用户对应的所有消息明细信息。
由上述描述可知,redis集群是进行缓存存储的,能够一次性的根据用户的唯一标识拉取该用户下的所有消息明细信息。
进一步地,所述生成离线消息并存储至数据库包括:
在将述用户对应的消息明细信息存储至redis集群个人收件箱中的同时,生成一个与所述消息明细信息对应的离线消息,异步将所述离线消息存储至数据库中。
由上述描述可知,在采用缓存对离线消息明细进行处理的同时,异步将生成的离线消息存储至数据库,实现离线的消息明细信息处理和入库的分离,提高消息推送的效率。
进一步地,还包括:
若所述待推送消息对应的用户处于在线状态,则通过与用户之间建立的长连接直接发送所述用户对应的消息明细信息。
由上述描述可知,在线和离线的明细均生成存放至redis集群中,所有的消息推送均从redis集群中查询发送,以此方式,采用缓存的方式进行消息处理,能够进一步提高消息推送的效率。
本发明上述的一种消息存储的方法及终端,适用于提高离线消息的推送效率,以下通过具体的实施方式进行说明:
实施例一
请参照图1,一种消息存储的方法,包括步骤:
S1、接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中。
具体的,当运维人员配置一条需要推送的消息,并执行发送后。接收到该条待推送的消息,则根据该条推送消息,生成该应用下所有有效用户的消息明细信息,并记录所有消息明细至redis集群中。
S2、若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
在本实施例中,一般用户分为两种,一种是网络稳定,与服务端已经建立了长连接的在线用户;另一种是网络不稳定,并未与服务端成功建立长连接的离线用户。
其中,按照用户的唯一标识查找用户对应的redis集群个人收件箱,并将所述用户对应的消息明细信息存储至所述redis集群个人收件箱中,一般记录形式为userId,msgId或者userId,msgId_time的形式。
在本实施例中,将用户的个人收件箱由原先保存在数据库中,迁移保存至redis集群中,如用户不在线,则将消息明细信息保存至redis集群个人收件箱中。
其中,在将述用户对应的消息明细信息存储至redis集群个人收件箱中的同时,生成一个与所述消息明细信息对应的离线消息,异步将所述离线消息存储至数据库中。
在本实施例中,每产生一个离线消息后,异步发送离线消息,并统一进行离线消息的入库处理。
S3、当所述用户处于在线状态后拉取数据库中的离线消息并从所述redis集群个人收件箱中获取消息明细信息时,删除所述redis集群个人收件箱中的消息明细信息以及所述数据库中的离线消息。
其中,所述用户根据唯一标识拉取对应的redis集群个人收件箱,从所述redis集群个人收件箱中获取所述用户对应的所有消息明细信息。
S4、若所述待推送消息对应的用户处于在线状态,则通过与用户之间建立的长连接直接发送所述用户对应的消息明细信息。
具体的,用户的客户端与服务端成功建立了长连接,此时向用户发送消息为在线推送,使消息明细信息直达用户的客户端。
在本实施例中,生成所有的消息明细后,由redis通知接入模块进行在线用户的消息发送。
实施例二
请参照图2,一种消息存储的终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一的一种消息存储的方法的各个步骤。
综上所述,本发明提供的一种消息存储的方法及终端,将待推送消息对应用户的消息明细信息均存储在redis集群中,若要推送的用户不处于在线状态,则将该用户的消息明细信息存储至redis集群个人收件箱中,同时异步生成离线信息并将其存储至数据库中。以此方式,通过redis集群保存所有的消息明细信息,对离线消息明细采用缓存处理,之后存储至数据库,实现离线的消息明细信息处理和入库的分离,通过该消息存储方法提高了后续消息推送的效率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种消息存储的方法,其特征在于,包括步骤:
接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中;
若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
2.根据权利要求1所述的一种消息存储的方法,其特征在于,若所述待推送消息对应的用户不处于在线状态,之后包括:
当所述用户处于在线状态后拉取数据库中的离线消息并从所述redis集群个人收件箱中获取消息明细信息时,删除所述redis集群个人收件箱中的消息明细信息以及所述数据库中的离线消息。
3.根据权利要求2所述的一种消息存储的方法,其特征在于,将所述用户对应的消息明细信息存储至redis集群个人收件箱中包括:
按照用户的唯一标识查找用户对应的redis集群个人收件箱,并将所述用户对应的消息明细信息存储至所述redis集群个人收件箱中;
所述用户处于在线状态并从所述redis集群个人收件箱中获取消息明细信息包括:
所述用户根据唯一标识拉取对应的redis集群个人收件箱,从所述redis集群个人收件箱中获取所述用户对应的所有消息明细信息。
4.根据权利要求1所述的一种消息存储的方法,其特征在于,所述生成离线消息并存储至数据库包括:
在将述用户对应的消息明细信息存储至redis集群个人收件箱中的同时,生成一个与所述消息明细信息对应的离线消息,异步将所述离线消息存储至数据库中。
5.根据权利要求1所述的一种消息存储的方法,其特征在于,还包括:
若所述待推送消息对应的用户处于在线状态,则通过与用户之间建立的长连接直接发送所述用户对应的消息明细信息。
6.一种消息存储的终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
接收待推送消息,生成所述待推送消息对应的所有用户的消息明细信息并存储至redis集群中;
若所述待推送消息对应的用户不处于在线状态,则将所述用户对应的消息明细信息存储至redis集群个人收件箱中,生成离线消息并存储至数据库。
7.根据权利要求6所述的一种消息存储的终端,其特征在于,若所述待推送消息对应的用户不处于在线状态,之后包括:
当所述用户处于在线状态后拉取数据库中的离线消息并从所述redis集群个人收件箱中获取消息明细信息时,删除所述redis集群个人收件箱中的消息明细信息以及所述数据库中的离线消息。
8.根据权利要求7所述的一种消息存储的终端,其特征在于,将所述用户对应的消息明细信息存储至redis集群个人收件箱中包括:
按照用户的唯一标识查找用户对应的redis集群个人收件箱,并将所述用户对应的消息明细信息存储至所述redis集群个人收件箱中;
所述用户处于在线状态并从所述redis集群个人收件箱中获取消息明细信息包括:
所述用户根据唯一标识拉取对应的redis集群个人收件箱,从所述redis集群个人收件箱中获取所述用户对应的所有消息明细信息。
9.根据权利要求6所述的一种消息存储的终端,其特征在于,所述生成离线消息并存储至数据库包括:
在将述用户对应的消息明细信息存储至redis集群个人收件箱中的同时,生成一个与所述消息明细信息对应的离线消息,异步将所述离线消息存储至数据库中。
10.根据权利要求6所述的一种消息存储的终端,其特征在于,还包括:
若所述待推送消息对应的用户处于在线状态,则通过与用户之间建立的长连接直接发送所述用户对应的消息明细信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310422594.4A CN116578591A (zh) | 2023-04-19 | 2023-04-19 | 一种消息存储的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310422594.4A CN116578591A (zh) | 2023-04-19 | 2023-04-19 | 一种消息存储的方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116578591A true CN116578591A (zh) | 2023-08-11 |
Family
ID=87534962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310422594.4A Pending CN116578591A (zh) | 2023-04-19 | 2023-04-19 | 一种消息存储的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116578591A (zh) |
-
2023
- 2023-04-19 CN CN202310422594.4A patent/CN116578591A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021121370A1 (zh) | 用于消息队列的消息丢失检测方法和装置 | |
KR100324976B1 (ko) | 비동기 클라이언트/서버 컴퓨팅 시스템에서 서버 그룹에 관한 작업부하 관리를 수행하는 데이터 처리 장치, 방법 및 컴퓨터 프로그램 제품 | |
CN113032419B (zh) | 一种多源数据聚合搜索方法、装置、设备及存储介质 | |
CN109933439B (zh) | 消息传输方法、装置、计算机设备和存储介质 | |
US10122665B2 (en) | Distributed synchronization data in a message management service | |
US20080133337A1 (en) | Method, apparatus and computer program for controlling retention of publications | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
CN108984333B (zh) | 用于大数据实时计算的方法及装置 | |
CN111641700A (zh) | 基于Ceph对象存储元数据的管理及检索的实现方法 | |
CN112822091A (zh) | 一种消息处理方法和装置 | |
CN113127232A (zh) | 消息处理方法、装置、设备及存储介质 | |
CN114641034B (zh) | 一种基于5g消息系统的下行信息处理方法及相关组件 | |
CN114827171B (zh) | 信息同步方法、装置、计算机设备和存储介质 | |
CN115934414A (zh) | 数据备份方法、数据恢复方法、装置、设备及存储介质 | |
CN112003831A (zh) | 一种分布式环境下的日志收集系统及日志收集方法 | |
CN110380967B (zh) | 一种基于sse技术的服务器推送消息方法 | |
CN114629866A (zh) | 一种多个系统之间随机在线客服建立实时通讯的方法 | |
CN112865927B (zh) | 消息送达验证方法、装置、计算机设备和存储介质 | |
CN116578591A (zh) | 一种消息存储的方法及终端 | |
CN109918210B (zh) | 一种展示离线消息的方法及终端 | |
US9852031B2 (en) | Computer system and method of identifying a failure | |
CN112671636B (zh) | 群组消息推送方法、装置、计算机设备和存储介质 | |
CN113364830B (zh) | 一种长链接的缓存优化方法及系统 | |
CN114938388A (zh) | 分布式数据的传输方法、装置、系统及存储介质 | |
CN115454666A (zh) | 消息队列集群间的数据同步方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |