掌桥专利:专业的专利平台
掌桥专利
首页

一种会话消息管理方法、系统、设备及存储介质

文献发布时间:2023-06-19 19:28:50


一种会话消息管理方法、系统、设备及存储介质

技术领域

本申请实施例涉及数据处理技术领域,尤其涉及一种会话消息管理方法、系统、设备及存储介质。

背景技术

目前,随着即时通讯应用的广泛应用,应用的会话类型也越来越复杂多样。当用户基于不同原因与不同对象产生聊天关系和内容时,会生成大量不同类型的聊天会话。在对多类型会话进行管理时,会将会话数据和消息数据都存储到数据库的会话列表中。当需要展示相应数据时,通过查询会话列表,并将查询到的数据存放到缓存的有序列表里,进而按照顺序展示在应用界面的会话列表中。

但是,传统的会话消息管理方式需要按照不同会话类型构建会话列表以分别存储会话数据和消息数据,并根据业务层需要展示的会话和消息,查询数据库对应类型的会话列表并加载数据至缓存,以实现对应会话消息的展示。分类型管理会话消息需要占用较大的存储资源,且会话消息存储展示方式较为单一,缺乏灵活性。

发明内容

本申请实施例提供一种会话消息管理方法、系统、设备及存储介质,能够节省会话消息的存储空间,提升会话消息管理灵活性,解决会话消息内存占用较大的技术问题。

在第一方面,本申请实施例提供了一种会话消息管理方法,包括:

基于数据库存储的会话数据在缓存中构建层级会话列表,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系;

响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。

在第二方面,本申请实施例提供了一种会话消息管理系统,包括:

构建模块,配置为基于数据库存储的会话数据在缓存中构建层级会话列表,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系;

加载模块,配置为响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。

在第三方面,本申请实施例提供了一种会话消息管理设备,包括:

存储器以及一个或多个处理器;

所述存储器,配置为存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的会话消息管理方法。

在第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由计算机处理器执行时配置为执行如第一方面所述的会话消息管理方法。

在第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品中包含有指令,当指令在计算机或处理器上运行时,使得计算机或处理器执行如第一方面所述的会话消息管理方法。

本申请实施例通过基于数据库存储的会话数据在缓存中构建层级会话列表。其中,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系。进而响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。采用上述技术手段,通过会话数据存储自身与会话类型的标识关系,可以减少数据库中会话列表的搭建。并通过在缓存中搭建层级会话列表,可以便于不同会话类型的会话消息的加载展示,以此来节省会话消息的存储空间,提升会话消息管理灵活性,提升用户的使用体验。

附图说明

图1是本申请实施例提供的一种会话消息管理方法的流程图;

图2是本申请实施例中会话消息的存储结构示意图;

图3是本申请实施例中层级关系更新示意图;

图4是本申请实施例中会话转移流程图;

图5是本申请实施例中会话类型的层级关系第一示意图;

图6是本申请实施例中会话类型的层级关系第二示意图;

图7是本申请实施例提供的一种会话消息管理系统的结构示意图;

图8是本申请实施例提供的一种会话消息管理设备的结构示意图;

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

本申请提供的提供的会话消息管理方法,旨在通过会话数据存储自身与会话类型的标识关系,并通过在缓存中搭建层级会话列表,业务层根据层级会话列表从数据库加载会话数据和消息数据进行展示。以此可以减少数据库中不同会话类型的会话列表构建,节省会话消息的存储空间。

对于传统的会话消息管理方案,在对多类型会话的存储、管理和展示时,传统做法是将会话数据和消息数据按照会话类型存储到数据库的不同会话列表中,后续通过查询会话列表提取数据并存放到缓存的有序列表里,以按照顺序展示在应用界面的会话列表中。并且,由于存储空间和会话存储结构限制,虽然会话消息有分类别的会话列表展示,但展示数量有限制。且会话列表间的链接关系固定单一,不能根据具体业务需求和性质修改。划分会话类别的标准也相对固定,不能在线上云控修改。在多会话列表情况下,会话也无法转移。基于此,提供本申请实施例的一种会话消息管理方法,以解决现有会话消息内存占用较大的技术问题,并提升会话消息管理灵活性。

实施例:

图1给出了本申请实施例提供的一种会话消息管理方法的流程图,本实施例中提供的会话消息管理方法可以由会话消息管理设备执行,该会话消息管理设备可以通过软件和/或硬件的方式实现,该会话消息管理设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。一般而言,该会话消息管理设备可以是电脑,手机,平板等数据处理设备。

下述以会话消息管理设备为执行会话消息管理方法的主体为例,进行描述。参照图1,该会话消息管理方法具体包括:

S110、基于数据库存储的会话数据在缓存中构建层级会话列表,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系;

S120、响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。

本申请实施例的会话消息管理方法,在进行会话消息管理时,如图2所示,通过在数据库构建两个有序数组,分别存储会话数据和消息数据,其中,会话数据中存储了会话与所属会话类型的标识关系。进而基于数据库存储的数据,在缓存中搭建层级会话列表,记录不同会话类型与对应会话之间的层级关系。使得在有限的设备存储空间下,设备能存储大量会话消息以及会话与对应会话类型的关联关系,从而顺利在设备应用界面上展示不同会话类型的会话列表及其中的同类型会话。

具体地,由于会话消息管理设备的硬件限制(如手机,电脑等),其硬盘容量和运行内存较小,这就要求会话消息的存储空间占用要尽可能小,同时也需满足业务要求。因此本申请实施例通过两个有序数组以按照顺序存储即时通讯应用产生的会话数据和消息数据。

其中,消息即为即时通讯应用用户与特定对象产生的聊天消息。会话即为即时通讯应用用户与特定对象的聊天消息的集合,包含一对一聊天、多人群组聊天等。会话数据包含自身与所属会话类型的标识关系,定义该标识关系为第一标识关系。第一标识关系具体包含了识别该会话数据的唯一标识符,以及会话所属会话类型的唯一标识符。通过该第一标识关系,可以确定各个会话数据与其所属会话类型的关联关系。消息数据包含消息内容(即聊天消息)以及自身与所属会话数据的标识关系,定义该标识关系为第二标识关系。第二标识关系包含识别该消息的唯一标识符以及识别该消息所属会话数据的唯一标识符。通过该第二标识关系可以确定各个聊天消息与所属会话的关联关系。

需要说明的是,消息数据与会话数据以有序数组的形式存储于数据库中,并且,其加载至缓存时,也是以有序数组形式缓存。只需两个数组即可缓存消息和会话的数据,节省大量内存空间。以此可以便于依序进行会话消息加载展示,保障会话消息存储的可靠性。由于会话数据中包含了标识该会话所指向的会话类型的第一标识关系,通过这种信息存储方式,无需额外的存储空间保存会话列表以存储不同会话类型与对应会话的关联关系。该关联关系本身存储在会话中,以此可以节省数据库大量的存储空间。

进一步地,基于数据库已存储的消息数据和会话数据,会在缓存中构建一个层级会话列表,以存储不同会话类型与对应的会话数据的层级关系。可以理解的是,在进行会话消息展示时,缓存需要对应应用界面需求展示的会话类型的会话消息,从数据库中加载相应的会话数据和消息数据,进而根据缓存中的会话数据和消息数据进行会话消息展示。基于此,根据数据库中会话数据存储的第一标识关系,本申请实施例对应在缓存中构建层级会话列表,记录不同会话类型与对应的会话数据的层级关系,该层级关系与第一标识关系对应,以便于后续的会话数据查询。

其中,层级会话列表包含不同会话类型的唯一标识符,每一个会话类型存储一个层级的层级会话列表。在对应层级的层级会话列表中,保存了置顶会话数据和正常会话数据。即每一个会话类型,都保存了其所链接的会话数据。通过采用链式的存储结构,保存各个层级的会话列表信息,以此大大减少业务获取对应会话列表的会话数据和消息数据耗时,增加用户体验。

根据实际需要,层级会话列表中各个会话的排序可以根据用户需求自定义设置,也可以根据消息接收时间等属性进行排序。通过按照消息接收时间排序会话,可以在减少无关会话对用户的干扰,同时及时提醒用户消息内容。

可选地,层级会话列表还用于存储不同会话类型之间的层级关系,下一层级的会话类型存储于所属会话类型的层级会话列表的指定位置。可以理解的是,对应不同会话类型,也可以通过构建层级关系进行会话消息管理。即一个会话类型的层级会话列表中,其子类不仅仅包含会话数据,也可以包含另一个会话类型。以此可以构建会话列表的链式存储结构,扩展用户对会话列表的展示需求。用户在应用界面上通过点击一个会话类型进入该会话类型的会话列表后,可以在会话列表中点击另一个会话类型,进而下一层级的子列表,即另一个会话类型的会话列表。

例如,将会话类型1的列表入口在会话类型0的会话列表中显示,会话类型3的列表入口在会话类型1中显示。以此在层级会话列表中按照0-1-3的链式存储结构存储层级关系。在数据库中,对应会话类型1和会话类型3存储会话数据,第一标识关系中会话类型1指向会话类型0,会话类型3指向会话类型1。以此即可实现不同会话类型之间的链式关系存储,满足用户对不同会话列表的存储需求,提升会话消息管理的灵活性。

进一步地,基于上述构建的层级会话列表,后续在进行会话消息展示时,业务层首先根据层级会话列表记录的不同会话类型将各个会话类型信息展示在应用界面上。进而根据用户选择的某一个会话类型,业务层生成对应会话类型的会话消息请求。基于该会话消息请求所请求的对应会话类型的会话消息,通过查询层级会话列表,确定该会话类型所关联的会话数据的标识信息。进而根据会话数据的标识信息查询数据库,找到包含对应标识信息的会话数据和消息数据,将会话数据和消息数据加载至缓存中。缓存一般可以按照顺序先加载设定数量的会话数据和对应的消息数据,并展示在应用界面上。用户下拉应用界面时,缓存继续依序加载会话数据和对应的消息数据,应用于会话消息显示。

至此,通过简单的数据结构配色层级会话列表,实现高效、灵活的会话消息展示,并节省数据库存储空间,提升会话消息管理效果。

可选地,基于已构建的层级关系,还通过获取业务层定义的会话类型与对应的会话数据的层级结构,比对层级结构与层级会话列表存储的层级关系是否一致;在层级结构与层级关系不一致的情况下,基于层级结构更新数据库中对应的会话数据的第一标识关系,基于更新后的第一标识关系更新层级会话列表存储的层级关系。

参照图3的步骤a1-a4,本申请实施例通过不断更新第一标识关系和对应的层级关系,保障各个会话的会话入口一致,会话消息显示准确,避免显示错乱的情况。例如,在缓存初始化后,通过查询数据库所有会话数据的第一标识关系,确定每一个会话所指向的会话类型。同时通过获取业务层定义的会话类型与对应的会话数据的层级结构。比对该层级结构与第一标识关系,可以理解的是,若一个会话数据的层级结构与第一标识关系不一致,则为了表明会话消息错乱。此时以业务层设置的层级结构为准,根据层级结构中该会话数据所指向的会话类型,更新数据库中该会话数据的第一标识关系。进而基于更新后的第一标识关系更新缓存中层级会话列表的对应层级关系,基于更新后的会话列表加载会话数据和消息数据至缓存。否则,直接加载会话数据和消息数据至缓存。

可选地,还可以根据用户设置,进行会话数据的层级转移。参照图4的步骤b1-b6,通过接收业务层对会话数据的层级设置信息,层级设置信息用于设置第一标识关系;比对层级设置信息与数据库中对应的第一标识关系是否一致,在层级设置信息与对应的第一标识关系不一致的情况下,基于层级设置信息更新对应的第一标识关系。

基于上述高效的会话数据存储机制,业务层即可根据用户需求适应性进行会话所属会话列表的转移,以满足用户对不同会话类型的个性化设置。根据用户需要转移的会话,业务层生成该会话的层级设置信息。该层级设置信息记录了一个会话数据所指向的会话类型,即用户需求当前会话转移到的对应会话列表。设备进而根据该层级设置信息查询数据库存储的对应会话数据的第一标识关系,若两者一致,则无需修改;若两者不一致,则需要根据层级设置信息更新该第一标识关系。并且,第一标识关系需要更新到层级会话列表中的层级关系中,以保障会话消息展示的一致性。

基于此,业务层只需根据自定义的规则,如根据聊天用户I D划分会话所属会话类型,或者根据会话是一对一聊天或群聊划分会话所属会话类型,进而调用系统SDK提供的接口工具(如UpdateShowLevel),更改数据库中会话数据存储的第一标识关系,修改第一标识关系中会话所属会话类型的唯一标识符属性。进而更新缓存的层级会话列表,即可把会话转移到对应会话列表,满足用户的个性化会话分类需求。此外,SDK也可以自动检测业务设置的分类标准,若分类标准发生更新,则会自动更新对应会话数据的第一标识关系,实现会话自动转移。

示例性地,参照图5,会话类型0的下一层级包括会话类型1和会话类型5,而会话类型5的下一层级又包含的会话类型3。基于会话类型0-5-3的链式存储关系,在进行会话转移时,若需要将会话类型3指向会话类型1,参照图6,则通过修改会话类型3的第一标识关系,使其指向指向会话类型1。并适应性更新缓存的层级关系。依次即可应用界面上将会话类型3转移到会话类型1的会话列表中。

进一步地,完成会话转移之后,还需要判断更新后的第一标识关系对应的会话数据是否为原会话类型的最新会话,在对应的会话数据为原会话类型的最新会话的情况下,从数据库查询对应的会话数据并加载至缓存。可以理解的是,若该会话数据是原会话列表中的最新会话,那么为了方便用户在新的会话列表查看这一最新会话,则需要将这一最新会话加载至缓存,通过缓存显示在新的会话列表上。

之后,基于更新后的第一标识关系更新层级会话列表存储的层级关系,并更新对应的会话类型的未读消息和未读消息数量。可以理解的是,由于会话数据所属会话类型发生变化,即应用界面上会话所在的会话列表发生了变化,从一个会话列表转移到另一个会话列表。那么在应用界面上,这两个会话列表的未读消息和未读消息数量都发生了变化,需要进行未读消息和未读消息数量的更新。则对应地,通过依序更新数据库、缓存和业务层中对应会话类型的未读消息和未读消息数量,以保障信息显示的一致性和准确性。

基于上述会话消息管理方法提供的便捷的会话分类标准和会话转移能力,用户即可轻松在应用上设置不同会话分类标准,如根据用户I D、用户类型、或者聊天类型等属性划分。以此提高用户寻找特定会话和获取聊天消息的效率,同时支持用户根据需要灵活定义会话类型分类标准和会话列表间的链接关系,应用也可以自行设置相应的分类标准,减少扩展成本。最终基于高效的会话数据存储结构和会话管理方式,提供灵活的不同类型会话列表组合、便捷的会话分类标准和会话转移能力,便于用户管理其众多会话消息,增加阅读效率和体验。

在一个实施例中,基于上述会话消息管理方法提供的便捷的会话分类标准和会话转移能力,还可以在云端上设置客户端的会话分类标准,如根据用户I D划分会话类型。可以理解的是,用户I D可简单地从服务器中获取,因此云端可以根据用户I D适应性设置和修改会话类型的分类标准,以使得客户端根据预设置的会话分类标准进行会话分类。又例如,运营人员可以在云端更新官号会话I D的划分范围,新增会话类型为官号I D。客户端获取到新的官号会话I D,更新会话分类标准。会话应用的SDK工具自动检测到此会话分类标准发生变化时,则可将新增会话转移到官号会话列表中。以此来提升会话分类管理的灵活性,满足用户会话分类的个性化需求。

上述,通过基于数据库存储的会话数据在缓存中构建层级会话列表。其中,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系。进而响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。采用上述技术手段,通过会话数据存储自身与会话类型的标识关系,可以减少数据库中会话列表的搭建。并通过在缓存中搭建层级会话列表,可以便于不同会话类型的会话消息的加载展示,以此来节省会话消息的存储空间,提升会话消息管理灵活性,提升用户的使用体验。

在上述实施例的基础上,图7为本申请提供的一种会话消息管理系统的结构示意图。参考图7,本实施例提供的会话消息管理系统具体包括:构建模块21和加载模块22。

其中,构建模块21配置为基于数据库存储的会话数据在缓存中构建层级会话列表,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系;

加载模块22配置为响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。

具体地,在响应于业务层对应会话列表的会话消息请求之前,还包括:

获取业务层定义的会话类型与对应的会话数据的层级结构,比对层级结构与数据库中会话数据的第一标识关系是否一致;

在层级结构与第一标识关系不一致的情况下,基于层级结构更新数据库中对应的会话数据的第一标识关系,基于更新后的第一标识关系更新层级会话列表存储的层级关系。

具体地,层级会话列表还用于存储不同会话类型之间的层级关系,下一层级的会话类型存储于所属会话类型的层级会话列表的指定位置。

具体地,在基于数据库存储的会话数据在缓存中构建层级会话列表之后,还包括:

接收业务层对会话数据的层级设置信息,层级设置信息用于设置第一标识关系;

比对层级设置信息与数据库中对应的第一标识关系是否一致,在层级设置信息与对应的第一标识关系不一致的情况下,基于层级设置信息更新对应的第一标识关系。

具体地,在基于层级设置信息更新对应的第一标识关系之后,还包括:

判断更新后的第一标识关系对应的会话数据是否为原会话类型的最新会话,在对应的会话数据为原会话类型的最新会话的情况下,从数据库查询对应的会话数据并加载至缓存。

具体地,在基于层级设置信息更新对应的第一标识关系之后,还包括:

基于更新后的第一标识关系更新层级会话列表存储的层级关系,并更新对应的会话类型的未读消息和未读消息数量。

上述,通过基于数据库存储的会话数据在缓存中构建层级会话列表。其中,层级会话列表用于存储不同会话类型与对应的会话数据的层级关系,数据库以有序数组分别存储会话数据和消息数据,会话数据包含自身与会话类型的第一标识关系,消息数据包含消息内容以及自身与所属会话数据的第二标识关系。进而响应于业务层对应会话类型的会话消息请求,基于会话消息请求查询层级会话列表,根据查询结果从数据库依序加载对应的会话数据和消息数据至缓存,以进行对应会话类型的会话消息展示。采用上述技术手段,通过会话数据存储自身与会话类型的标识关系,可以减少数据库中会话列表的搭建。并通过在缓存中搭建层级会话列表,可以便于不同会话类型的会话消息的加载展示,以此来节省会话消息的存储空间,提升会话消息管理灵活性,提升用户的使用体验。

本申请实施例提供的会话消息管理系统可以配置为执行上述实施例提供的会话消息管理方法,具备相应的功能和有益效果。

在上述实际上例的基础上,本申请实施例还提供了一种会话消息管理设备,参照图8,该会话消息管理设备包括:处理器31、存储器32、通信模块33、输入装置34及输出装置35。存储器32作为一种计算机可读存储介质,可配置为存储软件程序、计算机可执行程序以及模块,如本申请任意实施例所述的会话消息管理方法对应的程序指令/模块(例如,会话消息管理系统中的构建模块和加载模块)。通信模块33配置为进行数据传输。处理器31通过运行存储在存储器中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的会话消息管理方法。输入装置34可配置为接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置35可包括显示屏等显示设备。上述提供的会话消息管理设备可配置为执行上述实施例提供的会话消息管理方法,具备相应的功能和有益效果。

在上述实施例的基础上,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由计算机处理器执行时配置为执行一种会话消息管理方法,存储介质可以是任何的各种类型的存储器设备或存储设备。当然,本申请实施例所提供的一种计算机可读存储介质,其计算机可执行指令不限于如上所述的会话消息管理方法,还可以执行本申请任意实施例所提供的会话消息管理方法中的相关操作。

在上述实施例的基础上,本申请实施例还提供一种计算机程序产品,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机程序产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备、移动终端或其中的处理器执行本申请各个实施例所述会话消息管理方法的全部或部分步骤。

技术分类

06120115919465