CN110442848B - 数据序列化和解序列方法及其装置、电子设备和介质 - Google Patents
数据序列化和解序列方法及其装置、电子设备和介质 Download PDFInfo
- Publication number
- CN110442848B CN110442848B CN201910699231.9A CN201910699231A CN110442848B CN 110442848 B CN110442848 B CN 110442848B CN 201910699231 A CN201910699231 A CN 201910699231A CN 110442848 B CN110442848 B CN 110442848B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- character string
- length
- serialized
- 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.)
- Active
Links
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种应用于分布式缓存的数据序列化方法和装置,该方法包括:获取待序列化数据的数据值;确定待序列化数据的数据结构类型、数据值的类型和数据值的长度;基于数据结构类型、数据值的类型和数据值的长度的位数,生成标识数据;基于标识数据、数据值的长度和数据值,生成序列化结果;以及将序列化结果上送至分布式缓存。本公开还提供了一种应用于分布式缓存的数据解序列化方法和装置,一种电子设备以及一种计算机可读存储介质。
Description
技术领域
本公开涉及数据处理领域,特别是涉及一种数据序列化和解序列化方法及其装置、电子设备和介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在数据处理领域,目前分布式缓存大多使用分隔符分隔或转JS对象简谱(JavaScript Object Notation,简称为JSON)方式保存数据,但由于银行交易数据量大,上送缓存过程可能引发数据泄密,同时也经常引发分布式缓存性能问题。
发明内容
有鉴于此,为了解决现有技术中在分布式缓存中使用分隔符分隔或转JSON方式保存数据所带来的数据安全隐患和引发性能不稳定的问题。本公开提供了一种应用于分布式缓存的数据序列化方法及其装置,电子设备及介质。
为实现上述目的,本公开的一个方面提供了一种应用于分布式缓存的数据序列化方法,包括:获取待序列化数据的数据值,确定上述待序列化数据的数据结构类型、数据值的类型和数据值的长度,基于上述数据结构类型、上述数据值的类型和上述数据值的长度,生成标识数据,基于上述标识数据、上述数据值的长度和上述数据值,生成序列化结果,以及将上述序列化结果上送至上述分布式缓存。
根据本公开的实施例,上述基于上述数据结构类型、上述数据值的类型和上述数据值的长度的位数,生成标识数据包括:基于所述数据结构类型、所述数据值的类型和所述数据值的长度的位数,获取对应的预设标识数据,将上述预设标识数据转换为可显示的ASCII码字符,以及将上述可显示的ASCII码字符作为上述标识数据。
根据本公开的实施例,上述基于上述标识数据、上述数据值的长度和上述数据值,生成序列化结果包括:按照上述标识数据、上述数据值的长度和上述数据值的顺序,进行字符串拼接,以形成序列化字符串结果,以及将上述序列化字符串结果作为上述序列化结果。
根据本公开的实施例,上述基于上述标识数据、上述数据值的长度和上述数据值,生成序列化结果包括:获取上述待序列化数据的数据ID值,按照上述标识数据、上述数据值的长度、上述数据值和上述数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,以及将上述序列化字符串结果作为上述序列化结果。
根据本公开的实施例,上述基于上述标识数据、上述数据值的长度和上述数据值,生成序列化结果包括:获取上述待序列化数据的数据ID值和上述数据ID值的长度值,按照上述标识数据、上述数据值的长度、上述数据值、上述数据ID值的长度值和上述数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,以及将上述序列化字符串结果作为上述序列化结果。
为实现上述目的,本公开的另一个方面提供了一种应用于分布式缓存的数据解序列化方法,包括:从上述分布式缓存中获取待解序列化的字符串数据,截取上述字符串数据的标识数据,基于上述标识数据,确定上述字符串数据的数据结构类型和上述字符串数据的数据长度,根据上述数据长度截取上述字符串数据,以得到上述字符串数据的数据值,以及根据上述字符串数据的数据结构类型和上述数据值还原上述字符串数据,以获得解序列化结果。
根据本公开的实施例,上述根据上述字符串数据的数据结构类型和上述数据值还原上述字符串数据,以获得解序列化结果包括:在根据上述数据长度截取上述字符串数据,得到上述字符串数据的数据值之后,检测是否存在未截取的字符串数据,若存在上述未截取的字符串数据,则检测在上述未截取的字符串数据中是否存在数据ID值的长度值,若存在上述数据ID值的长度值,则基于上述数据ID值的长度值,确定上述数据ID值的数据长度,根据上述数据长度截取上述未截取的字符串数据,以得到上述数据ID值,以及根据上述字符串数据的数据结构类型、上述数据值和上述数据ID值还原上述字符串数据,以获得解序列化结果。
根据本公开的实施例,上述方法还包括:若不存在上述数据ID值的长度值,则截取上述未截取的字符串数据,以得到上述数据ID值,以及根据上述字符串数据的数据结构类型、上述数据值和上述数据ID值还原上述字符串数据,以获得解序列化结果。
为实现上述目的,本公开的另一个方面提供了一种应用于分布式缓存的数据序列化装置,包括:第一获取模块,被配置为获取待序列化数据的数据值,第一确定模块,被配置为确定上述待序列化数据的数据结构类型、上述数据值的类型和上述数据值的长度,第一生成模块,被配置为基于上述数据结构类型、上述数据值的类型和上述数据值的长度,生成标识数据,第二生成模块,被配置为基于上述标识数据、上述数据值的长度和上述数据值,生成序列化结果,以及上送模块,被配置为将上述序列化结果上送至上述分布式缓存。
根据本公开的实施例,上述第一生成模块包括:第一获取子模块,被配置为基于上述数据结构类型、上述数据值的类型和上述数据值的长度的位数,获取对应的预设标识数据,转换子模块,被配置为将上述预设标识数据转换为可显示的ASCII码字符,以及第一处理子模块,被配置为将上述可显示的ASCII码字符作为上述标识数据。
根据本公开的实施例,上述第二生成模块包括:第一拼接子模块,被配置为按照上述标识数据、上述数据值的长度和上述数据值的顺序,进行字符串拼接,以形成序列化字符串结果,以及第二处理子模块,被配置为将上述序列化字符串结果作为上述序列化结果。
根据本公开的实施例,上述第二生成模块包括:第二获取子模块,被配置为获取上述待序列化数据的数据ID值,第二拼接子模块,被配置为按照上述标识数据、上述数据值的长度、上述数据值和上述数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,以及第三处理子模块,被配置为将上述序列化字符串结果作为上述序列化结果。
根据本公开的实施例,上述第二生成模块包括:第三获取子模块,被配置为获取上述待序列化数据的数据ID值和上述数据ID值的长度值,第三拼接子模块,被配置为按照上述标识数据、上述数据值的数据长度、上述数据值、上述数据ID值的长度值和上述数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,以及第四处理子模块,被配置为将上述序列化字符串结果作为上述序列化结果。
为实现上述目的,本公开的另一个方面提供了一种应用于分布式缓存的数据解序列化装置,包括:第二获取模块,被配置为从上述分布式缓存中获取待解序列化的字符串数据,第一截取模块,被配置为截取上述字符串数据的标识数据,第二确定模块,被配置为基于上述标识数据,确定上述字符串数据的数据结构类型和上述字符串数据的数据值的长度,第二截取模块,被配置为根据上述数据值的长度截取上述字符串数据,以得到上述字符串数据的数据值,以及还原模块,被配置为根据上述字符串数据的数据结构类型和上述数据值还原上述字符串数据,以获得解序列化结果。
根据本公开的实施例,上述还原模块包括:第一检测子模块,被配置为在根据上述数据长度截取上述字符串数据,得到上述字符串数据的数据值之后,检测是否存在未截取的字符串数据,第二检测子模块,被配置为若存在上述未截取的字符串数据,则检测在上述未截取的字符串数据中是否存在数据ID值的长度值,确定子模块,被配置为若存在上述数据ID值的长度值,则基于上述数据ID值的长度值,确定上述数据ID值的数据长度,获得子模块,被配置为根据上述数据长度截取上述未截取的字符串数据,以得到上述数据ID值,以及第一还原子模块,被配置为根据上述字符串数据的数据结构类型、上述数据值和上述数据ID值还原上述字符串数据,以获得解序列化结果。
根据本公开的实施例,上述还原模块还包括:第二截取子模块,被配置为若不存在上述数据ID值的长度值,则截取上述未截取的字符串数据,以得到上述数据ID值,以及第二还原子模块,被配置为根据上述字符串数据的数据结构类型、上述数据值和上述数据ID值还原上述字符串数据,以获得解序列化结果。
为实现上述目的,本公开的另一方面提供了一种电子设备,包括:一个或多个处理器,存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的方法。
为实现上述目的,本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
为实现上述目的,本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
由上可见,本公开实施例提供的应用于分布式缓存的数据序列化方法及其装置、数据解序列化方法及其装置,可以基于待序列化数据的数据结构类型、数据值的类型和数据值的长度的位数,生成标识数据,基于标识数据、数据值和数据值的数据长度,压缩以生成序列化结果,可以至少部分克服现有技术中使用分隔符分隔或转JSON方式保存数据的方法导致的数据安全性隐患,也可以减轻由于数据量大对分布式缓存造成的性能影响。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了适用于本公开实施例的数据序列化及解序列化方法和装置的系统架构;
图2示意性示出了根据本公开实施例的应用于分布式缓存的数据序列化方法的流程图;
图3示意性示出了根据本公开另一实施例的应用于分布式缓存的数据序列化方法的流程图;
图4示意性示出了根据本公开实施例的应用于分布式缓存的数据解序列化方法的流程图;
图5示意性示出了根据本公开另一实施例的应用于分布式缓存的数据解序列化方法的流程图;
图6示意性示出了根据本公开实施例的应用于分布式缓存的数据序列化和解序列化方法的总流程图;
图7示意性示出了根据本公开实施例的应用于分布式缓存的数据序列化装置的框图;
图8示意性示出了根据本公开实施例的应用于分布式缓存的数据解序列化装置的框图;以及
图9示意性示出了根据本公开实施例的适于实现上文描述的数据序列化和解序列化方法及装置的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了上述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
在数据处理领域,目前序分布式缓存大多使用分隔符分隔或转成JSON方式保存数据,但由于银行交易数据量大,上送缓存过程可能引发数据泄密,同时也经常引发分布式缓存性能问题。
基于此,本公开的实施例提供了一种应用于分布式缓存的数据序列化方法,包括:在获取到待序列化数据的数据值之后,首先确定待序列化数据的数据结构类型、数据值的类型和数据值的长度。然后,基于数据结构类型、数据值的类型和数据值的长度,生成标识数据。接着,基于标识数据、数据值的长度和数据值,生成序列化结果。最后,将序列化结果上送至分布式缓存,使用数据时从分布式缓存中直接拉取字符串,经过反序列化处理最终可以还原成所需数据。
图1示意性示出了适用于本公开实施例的数据序列化及解序列化方法和装置的系统架构。需要说明的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
随着信息技术的飞速发展,各行各业积累了大量的数据。数据存储变得非常重要,在本地缓存已无法满足数据的存储需要的情况下,分布式缓存由于其高性能、高可用性等优点,迅速被广大企业、单位、公司接受并使用。分布式缓存可用处理大量的动态数据,从本地缓存扩展到分布式缓存之后,关注重点从CPU、内存、缓存之间的数据传输速度差异也扩展到了业务系统,数据库、分布式缓存之间的数据传输速度差异。
如图1所示,该系统架构100可以包括应用服务器110,n个(n≥2)分布式缓存服务器120和数据库服务其130。其中,应用服务器上安装有应用程序,应用服务器可以从本地缓存中读取数据以进行数据交互。分布式缓存服务器120可以提供远程分布式缓存服务,缓存是分布式系统中的重要组件,主要解决数据高并发,大数据场景下,热点数据访问的性能安全问题,提供高性能的数据快速访问。数据库服务器130提供数据库服务。应该理解,图1中的分布式缓存服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的分布式缓存服务器。
以下参考附图并结合具体实施例详细阐述本公开。
图2示意性示出了根据本公开实施例的应用于分布式缓存的数据序列化方法的流程图。
如图2所示,该方法可以包括操作S210~操作S250。
在操作S210,获取待序列化数据的数据值。
在操作S220,确定待序列化数据的数据结构类型、数据值的类型和数据值的长度。
根据本公开的实施例,待序列化数据可以是存储在本地的数据。不同的数据具有不同的数据结构类型、数据值的类型以及数据值的长度。数据结构类型可以包括但不限于DataField、KeyedCollection(如下文中所示的kColl)以及IndexedCollection(如下文中所示的iColl)。
DataField代表独立的数据域。
例如:<field id=“phoneNo”value=“123”/>
又例如:<field id=“address”/>kColl表示一组可以是不同类型的数据元素(DataElement)的有序数据集。数据元素是结构化数据中的最小组成单元,数据元素以名字或在数据集中的位置索引来标识。
例如:
又例如:
iColl可以包含若干个kColl,并且这多个kColl具有相同的结构。数据元素以位置索引标识,索引从0开始。
例如:
又例如:
在操作S230,基于数据结构类型、数据值的类型和数据值的长度,生成标识数据。
在本公开中,标识数据包含用于标识待序列化数据的数据结构类型和数据值的长度值的位数信息,该位数信息指示数据值的长度所占的位数。例如,若数据值的长度值的位数信息为1,则指示数据值的长度所占的位数为1,则数据值的长度为1位数,可以为1至9中的任一数。若数据值的长度值的位数信息为2,则指示数据值的长度所占的位数为2,则数据值的长度为2位数,可以为11至99中的任一数。依此类推。
作为一种可选的实施例,基于数据结构类型、数据值的类型和数据值的数据长度,生成标识数据包括:获取与数据结构类型、数据值的类型相对应的预设标识数据,将预设标识数据转换为可显示的ASCII码字符,以及将可显示的ASCII码字符作为标识数据。
本公开根据本领域提供的公有(public)的序列化方法,将待序列化数据做划分,获取枚举类型的编号即预设标识数据,由于枚举类型的编号是不可显示的ASCII字符。因此,需要在枚举类型的编号值上加32,将其转换为可显示的ASCII字符。
例如,预设标识数据为“2”,加32之后为“34”,对应的可显示的ASCII字符为“″”。预设标识数据为“3”,加32之后为“35”,对应的可显示的ASCII字符为“#”。
在操作S240,基于标识数据、数据值的长度和数据值,生成序列化结果。
根据本公开的实施例,生成序列化结果的过程是将待序列化数据经过序列化方法压缩后形成字符串的过程。本公开提供了以下三种可选的实施例,以实现基于标识数据、数据值和数据值的数据长度,生成序列化结果。
作为一种可选的实施例,基于标识数据、数据值和数据值的数据长度,生成序列化结果包括:按照标识数据、数据值的数据长度和数据值的顺序,进行字符串拼接,以形成序列化字符串结果,并将序列化字符串结果作为序列化结果。
由于数据的标识信息标识的是数据的类型和数据值的长度所占的位数。因此,作为一种可选的实施例,在本公开中,生成序列化结果还可以支持用户自定义是否拼接数据ID值。
具体地,若拼接数据ID值,则可以获取待序列化数据的数据ID值,按照标识数据、数据值的长度、数据值和数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,并将序列化字符串结果作为序列化结果。
作为一种可选的实施例,在本公开中,生成序列化结果除了可以支持用户自定义是否拼接数据ID值之外,还可以支持用户自定义是否拼接数据ID值的长度值。具体地,若拼接数据ID值的长度值,则还可以在获取待序列化数据的数据ID值的同时,还获取数据ID值的长度值的位数信息,按照标识数据、数据值的数据长度、数据值、数据ID值的长度值和数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,并将序列化字符串结果作为序列化结果。
需要说明的是,考虑到转换后的字符串是嵌套形式的。因此,本公开在拼接ID值的时候,使用一位ASCII码作为长度标识,即用一位ASCII码指示数据ID值的长度值的位数信息。
在操作S250,将序列化结果上送至分布式缓存。
通过本公开的实施例,可以基于待序列化数据的数据结构类型、数据值的类型和数据值的数据长度,生成标识数据,基于标识数据、数据值的数据长度和数据值,压缩以生成序列化结果,可以至少部分克服现有技术中使用分隔符分隔或转JSON方式保存数据的方法导致的数据安全性隐患,也可以减轻由于数据量大对分布式缓存造成的性能影响。
作为一种可选的实施例,图3示意性示出了根据本公开另一实施例的应用于分布式缓存的数据序列化方法的流程图。
如图3所示,该方法可以包括操作S310~操作S380。
在操作S310,序列化开始。
在操作S320,DataElement数据输入。
在操作S330,计算数据值长度。
在操作S340,数据类型判断。
在操作S350,生成ASCII唯一标识。
在操作S360,字符串拼接。
在操作S370,上送分布式缓存。
在操作S380,结束序列化过程。
图4示意性示出了根据本公开实施例的应用于分布式缓存的数据解序列化方法的流程图。
如图4所示,该方法可以包括操作S410~操作S450。
在操作S410,从分布式缓存中获取待解序列化的字符串数据。
在操作S420,截取字符串数据的标识数据。
在操作S430,基于标识数据,确定字符串数据的数据结构类型和字符串数据的数据值的长度。
在操作S440,根据数据值的长度截取字符串数据,以得到字符串数据的数据值。
在操作S450,根据字符串数据的数据结构类型和数据值还原字符串数据,以获得解序列化结果。
作为一种可选的实施例,前述操作S450根据字符串数据的数据结构类型和数据值还原字符串数据,以获得解序列化结果包括:在根据数据长度截取字符串数据,得到字符串数据的数据值之后,检测是否存在未截取的字符串数据,若存在未截取的字符串数据,则检测在未截取的字符串数据中是否存在数据ID值的长度值,若存在数据ID值的长度值,则基于数据ID值的长度值,确定数据ID值的数据值的长度,根据数据值的长度截取未截取的字符串数据,以得到数据ID值,以及根据字符串数据的数据结构类型、数据值和数据ID值还原字符串数据,以获得解序列化结果。
作为一种可选的实施例,方法还包括:若不存在数据ID值的长度值,则截取未截取的字符串数据,以得到数据ID值,以及根据字符串数据的数据结构类型、数据值和数据ID值还原字符串数据,以获得解序列化结果。
作为一种可选的实施例,图5示意性示出了根据本公开另一实施例的应用于分布式缓存的数据解序列化方法的流程图。
如图5所示,该方法可以包括操作S510~操作S570。
在操作S510,反序列化开始。
在操作S520,从分布式缓存获取序列化字符串。
在操作S530,截取第一位数据标识。
在操作S540,根据数据值长度截取数据值。
在操作S550,根据数据类型还原数据。
在操作S560,填充数据值。
在操作S570,结束反序列化过程。
图6示意性示出了根据本公开实施例的应用于分布式缓存的数据序列化和解序列化方法的总流程图。
将本地数据经过序列化方法压缩后形成字符串并上送缓存,使用数据时从缓存拉取经过反序列化方法还原成所需数据。通过对数据结构类型以及数据值长度的判断,采用ASCII码唯一标识数据,然后将数据标识、数据值的长度以及数据值做字符串拼接,形成序列化字符串结果,然后采用拼接逆过程还原数据。功能主要包括:判断数据类型、计算数据值长度、生成数据标识、拼接数据、还原拼接数据。
如图6所示,该方法可以包括操作S610~操作S650。
在操作S610,判断数据类型。
在操作S620,计算数据值长度。
在操作S630,生成数据标识。
在操作S640,拼接序列化数据。
在操作S650,还原序列化数据。
为了便于理解,本公开以测试数据为例,对本公开的数据序列化方法和解序列化方法的执行结果展示如下。
根据本公开提供的数据序列化方法生成的序列化结果为:
″88,79,4265test1)kcollname63001′kcollid611(kcollage&kcoll265test1$name63001″id611#age%kcoll&icoll1
根据本公开提供的数据反序列化方法生成的反序列化结果为:
图7示意性示出了根据本公开实施例的应用于分布式缓存的数据序列化装置的框图。
如图7所示,该数据序列化装置700可以包括第一获取模块710、第一确定模块720、第一生成模块730、第二生成模块740以及上送模块750。
第一获取模块710,被配置为执行例如前述操作S210,获取待序列化数据的数据值。
第一确定模块720,被配置为执行例如前述操作S220,确定待序列化数据的数据结构类型、数据值的类型和数据值的长度。
第一生成模块730,被配置为执行例如前述操作S230,基于数据结构类型、数据值的类型和数据值的长度的位数,生成标识数据。
第二生成模块740,被配置为执行例如前述操作S240,基于标识数据、数据值的长度和数据值,生成序列化结果。
上送模块750,被配置为执行例如前述操作S250,将序列化结果上送至分布式缓存。
通过本公开的实施例,可以基于待序列化数据的数据结构类型、数据值的类型和数据值的数据长度,生成标识数据,基于标识数据、数据值的数据长度和数据值,压缩以生成序列化结果,可以至少部分克服现有技术中使用分隔符分隔或转JSON方式保存数据的方法导致的数据安全性隐患,也可以减轻由于数据量大对分布式缓存造成的性能影响。
作为一种可选的实施例,第一生成模块可以包括:第一获取子模块,被配置为基于数据结构类型、数据值的类型和数据值的长度的位数,获取对应的预设标识数据,转换子模块,被配置为将预设标识数据转换为可显示的ASCII码字符,以及第一处理子模块,被配置为将可显示的ASCII码字符作为标识数据。
作为一种可选的实施例,第二生成模块可以包括:第一拼接子模块,被配置为按照标识数据、数据值的数据长度和数据值的顺序,进行字符串拼接,以形成序列化字符串结果,以及第二处理子模块,被配置为将序列化字符串结果作为序列化结果。
作为一种可选的实施例,第二生成模块可以包括:第二获取子模块,被配置为获取待序列化数据的数据ID值,第二拼接子模块,被配置为按照标识数据、数据值的数据长度、数据值和数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,以及第三处理子模块,被配置为将序列化字符串结果作为序列化结果。
作为一种可选的实施例,第二生成模块可以包括:第三获取子模块,被配置为获取待序列化数据的数据ID值和数据ID值的长度值,第三拼接子模块,被配置为按照标识数据、数据值的数据长度、数据值、数据ID值的长度值和数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果,以及第四处理子模块,被配置为将序列化字符串结果作为序列化结果。
图8示意性示出了根据本公开实施例的应用于分布式缓存的数据解序列化装置的框图。
如图8所示,该数据解序列化装置800可以包括第二获取模块810、第一截取模块820、第二确定模块830、第二截取模块840以及还原模块850。
第二获取模块810,被配置为执行例如前述操作S410,从分布式缓存中获取待解序列化的字符串数据。
第一截取模块820,被配置为执行例如前述操作S420,截取字符串数据的标识数据。
第二确定模块830,被配置为执行例如前述操作S430,基于标识数据,确定字符串数据的数据结构类型和字符串数据的数据长度。
第二截取模块840,被配置为执行例如前述操作S440,根据数据长度截取字符串数据,以得到字符串数据的数据值。
还原模块850,被配置为执行例如前述操作S450,根据字符串数据的数据结构类型和数据值还原字符串数据,以获得解序列化结果。
作为一种可选的实施例,前述还原模块850可以包括:第一截取子模块,被配置为在根据数据长度截取字符串数据,以得到字符串数据的数据值之后,检测是否存在未截取的字符串数据,第一检测子模块,被配置为若存在未截取的字符串数据,则检测在未截取的字符串数据中是否存在数据ID值的长度值,确定子模块,被配置为若存在数据ID值的长度值,则基于数据ID值的长度值,确定数据ID值的数据长度,获得子模块,被配置为根据数据长度截取未截取的字符串数据,以得到数据ID值,以及第一还原子模块,被配置为根据字符串数据的数据结构类型、数据值和数据ID值还原字符串数据,以获得解序列化结果。
作为一种可选的实施例,前述还原模块850还可以包括:第二截取子模块,被配置为若不存在数据ID值的长度值,则截取未截取的字符串数据,以得到数据ID值,以及第二还原子模块,被配置为根据字符串数据的数据结构类型、数据值和数据ID值还原字符串数据,以获得解序列化结果。
需要说明的是,应用于分布式缓存的数据序列化和解序列化装置部分的实施例方式与应用于分布式缓存的数据序列化方法部分的实施例方式对应类似,并且所达到的技术效果也对应类似,在此不再赘述。
根据本公开的实施例的模块、子模块中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块710、第一确定模块720、第一生成模块730、第二生成模块740、上送模块750、第一获取子模块、转换子模块、第一处理子模块、第一拼接子模块、第二处理子模块、第二获取子模块、第二拼接子模块、第三处理子模块、第三获取子模块、第三拼接子模块、第四处理子模块、第二获取模块810、第一截取模块820、第二确定模块830、第二截取模块840、还原模块850、第一检测子模块、第二检测子模块、确定子模块、获得子模块、第一还原子模块、第二截取子模块以及第二还原子模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块710、第一确定模块720、第一生成模块730、第二生成模块740、上送模块750、第一获取子模块、转换子模块、第一处理子模块、第一拼接子模块、第二处理子模块、第二获取子模块、第二拼接子模块、第三处理子模块、第三获取子模块、第三拼接子模块、第四处理子模块、第二获取模块810、第一截取模块820、第二确定模块830、第二截取模块840、还原模块850、第一检测子模块、第二检测子模块、确定子模块、获得子模块、第一还原子模块、第二截取子模块以及第二还原子模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块710、第一确定模块720、第一生成模块730、第二生成模块740、上送模块750、第一获取子模块、转换子模块、第一处理子模块、第一拼接子模块、第二处理子模块、第二获取子模块、第二拼接子模块、第三处理子模块、第三获取子模块、第三拼接子模块、第四处理子模块、第二获取模块810、第一截取模块820、第二确定模块830、第二截取模块840、还原模块850、第一检测子模块、第二检测子模块、确定子模块、获得子模块、第一还原子模块、第二截取子模块以及第二还原子模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图9示意性示出了根据本公开实施例的适于实现上文描述的数据库访问方法及装置的电子设备的框图。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,根据本公开实施例的计算机系统900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有系统900操作所需的各种程序和数据。处理器901、ROM 902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。系统900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (12)
1.一种应用于分布式缓存的数据序列化方法,包括:
获取待序列化数据的数据值;
确定所述待序列化数据的数据结构类型、数据值的类型和数据值的长度;
基于所述数据结构类型、所述数据值的类型和所述数据值的长度的位数,生成标识数据;
基于所述标识数据、所述数据值的长度和所述数据值,生成序列化结果;以及
将所述序列化结果上送至所述分布式缓存,
其中,所述待序列化数据的数据结构类型是由不同类型的数据元素组成的有序数据集,所述数据元素以名字或在数据集中的位置索引来标识。
2.根据权利要求1所述的方法,其中,所述基于所述数据结构类型、所述数据值的类型和所述数据值长度的位数,生成标识数据包括:
基于所述数据结构类型、所述数据值的类型和所述数据值的长度的位数,获取与对应的预设标识数据;
将所述预设标识数据转换为可显示的ASCII码字符;以及
将所述可显示的ASCII码字符作为所述标识数据。
3.根据权利要求1所述的方法,其中,所述基于所述标识数据、所述数据值的长度和所述数据值,生成序列化结果包括:
按照所述标识数据、所述数据值的长度和所述数据值的顺序,进行字符串拼接,以形成序列化字符串结果;以及
将所述序列化字符串结果作为所述序列化结果。
4.根据权利要求1所述的方法,其中,所述基于所述标识数据、所述数据值的长度和所述数据值,生成序列化结果包括:
获取所述待序列化数据的数据ID值;
按照所述标识数据、所述数据值的长度、所述数据值和所述数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果;以及
将所述序列化字符串结果作为所述序列化结果。
5.根据权利要求1所述的方法,其中,所述基于所述标识数据、所述数据值的长度和所述数据值,生成序列化结果包括:
获取所述待序列化数据的数据ID值和所述数据ID值的长度值;
按照所述标识数据、所述数据值的长度、所述数据值、所述数据ID值的长度值和所述数据ID值的顺序,进行字符串拼接,以形成序列化字符串结果;以及
将所述序列化字符串结果作为所述序列化结果。
6.一种应用于分布式缓存的数据解序列化方法,包括:
从所述分布式缓存中获取待解序列化的字符串数据;
截取所述字符串数据的标识数据;
基于所述标识数据,确定所述字符串数据的数据结构类型和所述字符串数据的数据值的长度;
根据所述数据值的长度截取所述字符串数据,以得到所述字符串数据的数据值;以及
根据所述字符串数据的数据结构类型和所述数据值还原所述字符串数据,以获得解序列化结果,
其中,所述解序列化结果的数据结构类型是由不同类型的数据元素组成的有序数据集,所述数据元素以名字或在数据集中的位置索引来标识。
7.根据权利要求6所述的方法,其中,所述根据所述字符串数据的数据结构类型和所述数据值还原所述字符串数据,以获得解序列化结果包括:
在根据所述数据值的长度截取所述字符串数据,得到所述字符串数据的数据值之后,检测是否存在未截取的字符串数据;
若存在所述未截取的字符串数据,则检测在所述未截取的字符串数据中是否存在数据ID值的长度值;
若存在所述数据ID值的长度值,则基于所述数据ID值的长度值,确定所述数据ID值的数据长度;
根据所述数据长度截取所述未截取的字符串数据,以得到所述数据ID值;以及
根据所述字符串数据的数据结构类型、所述数据值和所述数据ID还原所述字符串数据,以获得解序列化结果。
8.根据权利要求7所述的方法,其中,所述方法还包括:
若不存在所述数据ID的长度值,则截取所述未截取的字符串数据,以得到所述数据ID;以及
根据所述字符串数据的数据结构类型、所述数据值和所述数据ID还原所述字符串数据,以获得解序列化结果。
9.一种应用于分布式缓存的数据序列化装置,包括:
第一获取模块,被配置为获取待序列化数据的数据值;
第一确定模块,被配置为确定所述待序列化数据的数据结构类型、数据值的类型和数据值的长度;
第一生成模块,被配置为基于所述数据结构类型、所述数据值的类型和所述数据值的长度的位数,生成标识数据;
第二生成模块,被配置为基于所述标识数据、所述数据值的长度和所述数据值,生成序列化结果;以及
上送模块,被配置为将所述序列化结果上送至所述分布式缓存,
其中,所述待序列化数据的数据结构类型是由不同类型的数据元素组成的有序数据集,所述数据元素以名字或在数据集中的位置索引来标识。
10.一种应用于分布式缓存的数据解序列化装置,包括:
第二获取模块,被配置为从所述分布式缓存中获取待解序列化的字符串数据;
第一截取模块,被配置为截取所述字符串数据的标识数据;
第二确定模块,被配置为基于所述标识数据,确定所述字符串数据的数据结构类型和所述字符串数据的数据值长度;
第二截取模块,被配置为根据所述数据值长度截取所述字符串数据,以得到所述字符串数据的数据值;以及
还原模块,被配置为根据所述字符串数据的数据结构类型和所述数据值还原所述字符串数据,以获得解序列化结果,
其中,所述解序列化结果的数据结构类型是由不同类型的数据元素组成的有序数据集,所述数据元素以名字或在数据集中的位置索引来标识。
11.一种电子设备,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任一项所述的方法。
12.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910699231.9A CN110442848B (zh) | 2019-07-30 | 2019-07-30 | 数据序列化和解序列方法及其装置、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910699231.9A CN110442848B (zh) | 2019-07-30 | 2019-07-30 | 数据序列化和解序列方法及其装置、电子设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442848A CN110442848A (zh) | 2019-11-12 |
CN110442848B true CN110442848B (zh) | 2023-08-01 |
Family
ID=68432309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910699231.9A Active CN110442848B (zh) | 2019-07-30 | 2019-07-30 | 数据序列化和解序列方法及其装置、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442848B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124551B (zh) * | 2019-11-22 | 2023-11-17 | 矩阵元技术(深圳)有限公司 | 数据序列化、数据反序列化方法、装置和计算机设备 |
CN113392126B (zh) * | 2021-08-17 | 2021-11-02 | 北京易鲸捷信息技术有限公司 | 基于分布式数据库的执行计划缓存及读取方法 |
CN113704308B (zh) * | 2021-09-02 | 2024-03-12 | 中国联合网络通信集团有限公司 | 数据缓存方法、装置、服务器及充值系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326377A (zh) * | 2016-08-15 | 2017-01-11 | 东软集团股份有限公司 | 序列化方法、反序列化方法、装置和系统 |
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107818118B (zh) * | 2016-09-14 | 2019-04-30 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
-
2019
- 2019-07-30 CN CN201910699231.9A patent/CN110442848B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326377A (zh) * | 2016-08-15 | 2017-01-11 | 东软集团股份有限公司 | 序列化方法、反序列化方法、装置和系统 |
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110442848A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110442848B (zh) | 数据序列化和解序列方法及其装置、电子设备和介质 | |
CN109002510B (zh) | 一种对话处理方法、装置、设备和介质 | |
US10007596B2 (en) | Generating test scripts through application integration | |
CN107562600B (zh) | 页面检测方法、装置、计算设备以及存储介质 | |
CN107729246B (zh) | 针对目标应用的辅助测试方法、装置、设备及存储介质 | |
US8954928B2 (en) | Version labeling in a version control system | |
US9830316B2 (en) | Content availability for natural language processing tasks | |
CN113010405A (zh) | 一种应用程序的测试方法和装置 | |
WO2020199659A1 (zh) | 用于确定推送优先级信息的方法和装置 | |
CN110377273B (zh) | 一种数据处理的方法、装置、介质和电子设备 | |
CN112667219A (zh) | 代码生成方法及装置、设备、计算机可读存储介质 | |
CN116483888A (zh) | 程序评估方法及装置、电子设备和计算机可读存储介质 | |
CN116702752A (zh) | 文件数据处理方法、装置、设备及存储介质 | |
CN113010666B (zh) | 摘要生成方法、装置、计算机系统及可读存储介质 | |
CN113515271B (zh) | 服务代码生成方法、装置、电子设备及可读存储介质 | |
US11645323B2 (en) | Coarse-to-fine multimodal gallery search system with attention-based neural network models | |
US8838562B1 (en) | Methods and apparatus for providing query parameters to a search engine | |
CN110750569A (zh) | 数据提取方法、装置、设备及存储介质 | |
CN111291644B (zh) | 用于处理信息的方法和装置 | |
CN112068814A (zh) | 可执行文件的生成方法、装置、系统及介质 | |
CN110825438B (zh) | 用于模拟人工智能芯片的数据处理的方法和装置 | |
CN110909191A (zh) | 图数据处理方法及装置、存储介质、电子设备 | |
CN113485770B (zh) | 业务配置数据的确定方法、装置、电子设备及存储介质 | |
CN113852840B (zh) | 视频渲染方法、装置、电子设备以及存储介质 | |
CN114490400A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |