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

服务器数据存储的方法、系统、电子装置和存储介质

文献发布时间:2023-06-19 10:11:51


服务器数据存储的方法、系统、电子装置和存储介质

技术领域

本申请涉及计算机领域,特别是涉及服务器数据存储的方法、系统、电子装置和存储介质。

背景技术

随着网络游戏的快速发展,游戏玩家的数量也越来越多,这就导致了数据库中存储的数据必然越来越大,在网络游戏中,数据库主要用来保存用户资料,包括用户注册信息、用户游戏资料以及其他设置资料。网络游戏的服务器端在处理这些资料时,必然要使用数据库进行大量数据的永久存储,游戏数据库中的数据是游戏运营商最宝贵的资源,因此,在网络游戏的开发中游戏服务器中的用户数据存储是十分重要的环节。

在相关技术中,游戏服务器进程中一般为了加速数据处理,会在服务器进程中缓存用户数据,而用户数据的存储因为性能消耗比较大,不能实时落盘,只能定时落盘,会造成服务器宕机时用户数据出现回档的问题。

目前针对相关技术中,由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时用户数据丢失、回档的问题,尚未提出有效的解决方案。

发明内容

本申请实施例提供了服务器数据存储的方法、系统、电子装置和存储介质,至少解决相关技术中出现的由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时用户数据丢失、回档的问题。

第一方面,本申请实施例提供了一种服务器数据存储的方法,所述方法包括:

获取修改的增量数据,并给所述增量数据设置递增的版本号;

将所述增量数据,以及所述增量数据的版本号存储到缓存数据库redis中;

通过预设间隔时间对用户全量数据和所述增量数据的版本号进行定时落盘,生成落盘数据,并将所述落盘数据存储到mysql数据库。

在其中一些实施例中,定时落盘之后,所述方法包括:

在服务器宕机重启的情况下,读取所述mysql数据库中定时落盘的所述用户全量数据和所述增量数据的版本号;

将所述缓存数据库redis中比当前版本号大的增量数据,按照所述当前版本号从小到大依次合并,恢复完整的数据。

在其中一些实施例中,所述获取修改的增量数据包括:

通过工具获取并序列化所述修改的增量数据,其中,所述修改的增量数据是用户操作造成的数据修改。

在其中一些实施例中,在所述通过预设间隔时间对用户全量数据和所述增量数据的版本号进行定时落盘之后,所述方法包括:

删除所述缓存数据库redis中的所述增量数据。

第二方面,本申请实施例提供了一种服务器数据存储的系统,所述系统包括:

获取模块,用于获取修改的增量数据,并给所述增量数据设置递增的版本号;

缓存模块,用于将所述增量数据,以及所述增量数据的版本号存储到缓存数据库redis中;

定存模块,用于通过预设间隔时间对用户全量数据和所述增量数据的版本号进行定时落盘,生成落盘数据,并将所述落盘数据存储到mysql数据库。

在其中一些实施例中,所述系统还包括恢复模块,定时落盘之后,

所述恢复模块,用于在服务器宕机重启的情况下,读取所述mysql数据库中定时落盘的所述用户全量数据和所述增量数据的版本号,

将所述缓存数据库redis中比当前版本号大的增量数据,按照所述当前版本号从小到大依次合并,恢复完整的数据。

在其中一些实施例中,所述获取模块还用于通过工具获取并序列化所述修改的增量数据,其中,所述修改的增量数据是用户操作造成的数据修改。

在其中一些实施例中,所述缓存模块还用于在所述通过预设间隔时间对用户全量数据和所述增量数据的版本号进行定时落盘之后,

删除所述缓存数据库redis中的所述增量数据。

第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项所述的服务器数据存储的方法。

第四方面,本申请实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项所述的服务器数据存储的方法。

相比于相关技术,本申请实施例提供的一种服务器数据存储的方法,获取修改的增量数据,并给该增量数据设置递增的版本号;接着将增量数据,以及增量数据的版本号存储到缓存数据库redis中;最后通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘,生成落盘数据,并将落盘数据存储到mysql数据库中,完成服务器数据存储,解决了由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时用户数据丢失、回档的问题,提高了用户数据存储的安全性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的一种服务器数据存储的方法的应用环境示意图;

图2是根据本申请实施例的服务器数据存储方法的流程图;

图3是根据本申请实施例的服务器数据存储系统的结构框图;

图4是根据本申请实施例的服务器数据存储系统的另一种结构框图;

图5是根据本申请实施例的电子设备的内部结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。

除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。

本申请提供的服务器数据存储的方法,可以应用于如图1所示的应用环境中,图1是根据本申请实施例的一种服务器数据存储的方法的应用环境示意图,如图1所示,其中,该应用环境的系统包括服务器10和智能终端设备11,服务器10获取修改的增量数据,并给该增量数据设置递增的版本号,接着将增量数据,以及增量数据的版本号存储到缓存数据库redis中,最后通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘,生成落盘数据,并将该落盘数据存储到mysql数据库中,完成服务器数据存储,解决了由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时会出现用户数据丢失、回档的问题,提高了用户数据存储的安全性。

本实施例提供了一种服务器数据存储的方法,图2是根据本申请实施例的服务器数据存储方法的流程图,如图2所示,该流程包括如下步骤:

步骤S201,获取修改的增量数据,并给增量数据设置递增的版本号,可选的,本实施例中服务器10获取修改的增量数据,并给该增量数据设置递增的版本号,通过对增量数据设置版本号能有效减少数据存储占用的资源,且能通过版本号快速查找对应的增量数据;

步骤S202,将增量数据,以及增量数据的版本号存储到缓存数据库redis中,其中,缓存数据库redis用于存储使用较为频繁的数据到缓存中,读取速度快。可选的,本实施例中将增量数据以及增量数据的版本号存储到缓存数据库redis中,由于增量数据的数据量较少,且缓存数据库性能高,因此,将使用频繁的增量数据缓存于缓存数据库中,有利于服务器快速读取数据,提高服务器的效率。此外,实施例中除了使用redis存储增量数据和版本号,还可以将增量数据和版本号存储到本地共享内存或日志文件中,两者得到的效果一样;

步骤S203,通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘,生成落盘数据,并将落盘数据存储到mysql数据库,其中,mysql数据库是关系型数据库,用于持久化的存储数据到硬盘,功能强大,但是读取速度较慢。可选的,本实施例通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘,生成落盘数据,并将落盘数据存储到mysql数据库中,完成服务器数据存储,其中,预设间隔时间可以根据实际需要存储数据的情况进行设置。全量数据的数据量比较大,需要的存储开销大,因此,使用mysql数据库存储全量数据,安全性更高。

通过上述步骤S201至步骤S203,相对于现有技术中,由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时用户数据丢失、回档的问题。本实施例获取修改的增量数据,并给该增量数据设置递增的版本号,接着将增量数据,以及增量数据的版本号存储到缓存数据库redis中,最后通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘,生成落盘数据,并将该落盘数据存储到mysql数据库中,完成服务器数据存储,解决了由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时会出现用户数据丢失、回档的问题,通过权衡服务器性能,由于增量数据的数据量比较少,存储开销小,全量数据比较大,存储开销大,因此使用两种数据库,结合redis的高性能和mysql的数据安全性,能有效节省大量内存资源,提高了用户数据存储的安全性和服务器的效率,减轻服务器宕机时的回档问题。

在其中一些实施例中,定时落盘之后,在服务器宕机重启的情况下,读取mysql数据库中定时落盘的用户全量数据和增量数据的版本号,将缓存数据库redis中比当前版本号大的增量数据,按照当前版本号从小到大依次合并,恢复完整的数据。可选的,定时落盘之后,如果服务器在中途执行中程序崩溃,会导致全量数据的定时存储没有执行,此时,读取mysql数据库中定时落盘的用户全量数据和增量数据的版本号,如全量数据:{"i1":0,"i2":0},并将缓存数据库redis中比当前版本号大的增量数据,如增量数据:{"i1":1}、{"i2":2},按照当前版本号从小到大依次合并,恢复得到完整的数据{"i1":1,"i2":2}。相比于相关技术通过节点恢复数据,本实施例实时将增量数据存储到缓存数据库redis中和定时存储全量数据到数据库mysql中,通过两个数据库配合使用,共同恢复完整的数据,能达到服务器宕机时用户数据不会回档的目的,并且有效节省存储开销。

在其中一些实施例中,获取修改的增量数据包括:通过工具获取并序列化修改的增量数据,其中,修改的增量数据是用户操作造成的数据修改,可选的,本实施例中通过json工具获取并序列化修改的增量数据,其中,修改的增量数据是由于用户操作而造成的数据发生修改。此外,还有很多种方法和工具能够获取并序列化修改的增量数据。

在其中一些实施例中,在通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘之后,删除缓存数据库redis中的增量数据。可选的,本实施例在经过一段预设的间隔时间对用户全量数据和增量数据的版本号进行定时落盘之后,可以删除缓存数据库redis中的增量数据,释放缓存数据库的内存,有利于提高服务器性能,能快速读取数据。

需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本实施例还提供了一种服务器数据存储的系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本申请实施例的服务器数据存储系统的结构框图,如图3所示,该系统包括获取模块31、缓存模块32和定存模块33:

获取模块31,用于获取修改的增量数据,并给增量数据设置递增的版本号;缓存模块32,用于将增量数据,以及增量数据的版本号存储到缓存数据库redis中;定存模块33,用于通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘,生成落盘数据,并将落盘数据存储到mysql数据库。

通过上述系统,获取模块31通过对增量数据设置版本号能有效减少数据存储占用的资源,且能通过版本号快速查找对应的增量数据;缓存模块32将使用频繁的增量数据缓存于缓存数据库中,有利于服务器快速读取数据,提高服务器的效率;定存模块33中用户全量数据的数据量比较大,需要的存储开销大,因此,使用mysql数据库存储全量数据,安全性更高。整个系统解决了由于存储用户数据性能消耗过大,不能实时落盘,而导致服务器宕机时会出现用户数据丢失、回档的问题,通过权衡服务器性能,由于增量数据的数据量比较少,存储开销小,全量数据比较大,存储开销大,因此使用两种数据库,结合redis的高性能和mysql的数据安全性,能有效节省大量内存资源,提高了用户数据存储的安全性和服务器的效率,减轻服务器宕机时的回档问题。

在其中一些实施例中,获取模块31还用于通过工具获取并序列化修改的增量数据,其中,修改的增量数据是用户操作造成的数据修改。可选的,本实施例中通过json工具获取并序列化修改的增量数据,其中,修改的增量数据是由于用户操作而造成的数据发生修改。此外,还有很多种方法和工具能够获取并序列化修改的增量数据。

在其中一些实施例中,缓存模块32还用于在通过预设间隔时间对用户全量数据和增量数据的版本号进行定时落盘之后,删除缓存数据库redis中的增量数据。可选的,本实施例在经过一段预设的间隔时间对用户全量数据和增量数据的版本号进行定时落盘之后,可以删除缓存数据库redis中的增量数据,释放缓存数据库的内存,有利于提高服务器性能,能快速读取数据。

在其中一些实施例中,系统还包括恢复模块,图4是根据本申请实施例的服务器数据存储系统的另一种结构框图,如图4所示,该系统包括获取模块41、缓存模块42、定存模块43和恢复模块44,定时落盘之后,恢复模块44,用于在服务器宕机重启的情况下,读取mysql数据库中定时落盘的用户全量数据和增量数据的版本号,将缓存数据库redis中比当前版本号大的增量数据,按照当前版本号从小到大依次合并,恢复完整的数据。可选的,定时落盘之后,如果服务器在中途执行中程序崩溃,会导致全量数据的定时存储没有执行,此时,读取mysql数据库中定时落盘的用户全量数据和增量数据的版本号,如全量数据:{"i1":0,"i2":0},并将缓存数据库redis中比当前版本号大的增量数据,如增量数据:{"i1":1}、{"i2":2},按照当前版本号从小到大依次合并,恢复得到完整的数据{"i1":1,"i2":2}。相比于相关技术通过节点恢复数据,本实施例实时将增量数据存储到缓存数据库redis中和定时存储全量数据到数据库mysql中,通过两个数据库配合使用,共同恢复完整的数据,能达到服务器宕机时用户数据不会回档的目的,并且有效节省存储开销。

下面结合应用场景对本发明进行详细的说明。

本发明的目的是提供一种游戏服务器数据存储的方法和系统,本实施例中的服务器数据存储的技术方案的流程步骤包括:

S1,首先需要有能获取用户数据中修改的增量数据的方法或工具,主要用于序列化修改的增量数据;

S2,用户操作造成数据修改后,通过工具获取修改的增量数据,并给这份数据一个递增的版本号,将增量数据及其版本号一起存储到缓存数据库redis中。因为增量数据比较少,缓存数据库性能也比较高,性能上一般都可以接受;

S3,每隔一定时间间隔对用户全量数据进行一次落盘,生成的落盘数据存储到mysql数据库中,其中,落盘数据中包含当前增量数据的版本号,落盘成功后可以删除缓存中的增量数据;

S4,如果服务器宕机后重启,先读取mysql数据库中定时落盘的全量数据和增量数据版本号,然后将缓存中的比当前版本号大的增量数据,按版本号从小到大依次合并到全量数据,这样就可以达到服务器宕机不回档的目的。

本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

另外,结合上述实施例中的服务器数据存储的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种服务器数据存储的方法。

在一个实施例中,图5是根据本申请实施例的电子设备的内部结构示意图,如图5所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图5所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种服务器数据存储的方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 服务器数据存储的方法、系统、电子装置和存储介质
  • 车辆数据存储系统、车辆数据存储设备、车辆数据存储服务器和车辆数据存储方法
技术分类

06120112457221