CN112597170B - Redis数据库的优化方法与系统 - Google Patents
Redis数据库的优化方法与系统 Download PDFInfo
- Publication number
- CN112597170B CN112597170B CN202011616821.XA CN202011616821A CN112597170B CN 112597170 B CN112597170 B CN 112597170B CN 202011616821 A CN202011616821 A CN 202011616821A CN 112597170 B CN112597170 B CN 112597170B
- Authority
- CN
- China
- Prior art keywords
- data
- object data
- serialization
- tool
- type
- 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
- 238000005457 optimization Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 4
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 125000006850 spacer group Chemical group 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000013523 data management Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种Redis数据库的优化方法,包括:获取对象数据以及所述对象数据的类型;基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间;根据所述对象数据的类型构建文件模式;通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据;将序列化处理后的数组数据存储至所述数据空间中。本发明实施例还公开了一种Redis数据库的优化系统。本发明实施例的有益效果在于:能够降低redis数据库的使用空间,进而降低内存数据的占用率。
Description
技术领域
本发明实施例涉及数据处理领域,尤其涉及一种Redis数据库的优化方法与系统。
背景技术
随着项目复杂度的提高,业务量的提升,用户对性能的要求也越来越高,项目中大量使用redis,带来性能提升的同时也增加了资源的使用,redis使用量动辄上百个G十分占用资源。且针对多属性数据的存储也比较混乱。
发明内容
有鉴于此,本发明实施例的目的是提供一种Redis数据库的优化方法与系统,能够降低redis数据库的使用空间,进而降低内存数据的占用率。
为实现上述目的,本发明实施例提供了一种Redis数据库的优化方法,包括:
获取对象数据以及所述对象数据的类型;
基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间;
根据所述对象数据的类型构建文件模式;
通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据;
将序列化处理后的数组数据存储至所述数据空间中。
进一步地,所述基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间包括:
获取所述对象数据的类型的个数;
根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据。
进一步地,所述通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据包括:
通过预设的数据接口调用所述序列化工具;
采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
进一步地,所述方法还包括:
预先设置多个序列化逻辑和所述序列化逻辑对应的反序列化逻辑;
将所述序列化逻辑和反序列化逻辑进行关联。
进一步地,所述方法还包括:
将所述文件模式存储至区块链中。
为实现上述目的,本发明实施例提供了一种Redis数据库的优化系统,包括:
获取模块,用于获取对象数据以及所述对象数据的类型;
分配模块,用于基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间;
构建模块,用于根据所述对象数据的类型构建文件模式;
处理模块,用于通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据;
存储模块,用于将序列化处理后的数组数据存储至所述数据空间中。
进一步地,所述分配模块还用于:
获取所述对象数据的类型的个数;
根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据。
进一步地,所述处理模块还用于:
通过预设的数据接口调用所述序列化工具;
采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
为实现上述目的,本发明实施例提供了一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上任一项所述的Redis数据库的优化方法的步骤。
为实现上述目的,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上任一项所述的Redis数据库的优化方法的步骤。
本发明实施例提供的Redis数据库的优化方法与系统,在redis数据库为对象数据分配数据空间,再根据对象数据的类型构建文件模式,通过序列化工具按照文件模式将对象数据进行序列化处理,得到数组数据,进而将数组数据存储在redis数据库的数据空间中,由于序列化的数组数据体积小,能够降低redis数据库的使用空间,进而降低内存数据的占用率。
附图说明
图1为本发明Redis数据库的优化方法实施例一的流程图。
图2为本发明Redis数据库的优化系统实施例二的程序模块示意图。
图3为本发明计算机设备实施例三的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参阅图1,示出了本发明实施例一之Redis数据库的优化方法的步骤流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备2为执行主体进行示例性描述。具体如下。
步骤S100,获取对象数据以及所述对象数据的类型。
具体地,对象数据包括待序列化的对象以及该对象对应的类型,对象表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象,该属性即为类型,类型可以表示为类。类是对象的模板,对象是类的实例,类只有通过对象才可以使用。对象数据为以Key-Value模式表示的数据,Key对应对象的字段,Value对应对象的属性,获取对象数据的Value值。
步骤S120,基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间。
具体地,将对象数据在redis数据库中进行存储时,先在redis数据库中为对象数据分配数据空间,使用LinkedBuffer为对象数据分配一块默认大小的buffer空间。数据空间也可以理解为缓存空间,在本地存储中为对象数据设置缓存空间,将对象数据放置在该缓存空间中,使得redis数据库的使用率下降,线上功能也一切正常,系统性能也没有多大影响。
在示例性地实施例中,所述步骤S120具体包括:
步骤S121,获取所述对象数据的类型的个数。
具体地,对象数据中,对象的类型可以为多属性类型,例如:该对象是班级,对应的多属性类型即为班级的人员,属性就包括:班级每个人的姓名、学号、年龄等。
步骤S122,根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据。
具体地,对象数据序列化存储时,会相应的将类型关联存储,需要根据对象数据的实际存储长度在redis数据库中为对象数据分配一定容量发数据空间,也可以根据类型,将多属性的对象数据和单属性的对象数据分配不同的数据空间,以便于进行数据管理。
步骤S140,根据所述对象数据的类型构建文件模式。
具体地,根据对象数据的类型构建文件模式Schema,Schema包含:对象进行序列化的序列化逻辑;对象进行反序列化的反序列化逻辑;对象必填字段的验证;对象字段名称到字段编号的映射;对象的实例化。对于现有的对象,必须使用protostuff-runtime来生成Schema。可以通过反射来缓存、使用Schema。在数据库中,schema为一组数据结构的逻辑集合,称之为schema对象,即对象数据的schema,schema对象最常用的为表和索引。在一个schema中,每个不同类型的schema对象有一个唯一的名称,例如:hr.employee表示表employee在hr这个schema中。序列化逻辑为:将对象数据转化为byte数组,按照key的数序依次映射为1位number的数字,也就是数字和value的对应关系,转为byte数组。对象数据包括有多个属性类型时,对象数据增加相应的value值的长度,以间隔符进行间隔,便于序列化时进行识别。而序列化处理时,byte数组同样以间隔符将对象数据的每个属性类型的序列化字段进行间隔,避免反序列化时出现混淆。
步骤S160,通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
具体地,预设的序列化工具为protostuff工具,将对象数据按照文件模式通过网络传输数据序列化工具protostuff将对象数据进行序列化处理,即,把对象数据的按照key的数序依次映射为1位number的数字,也就是数字和value的对应关系,转为byte数组,byte数组为经过protostuff序列化处理的数据,存储时占的内存少,减小了系统的内存压力。
在示例性地实施例中,所述步骤S160具体包括:
步骤S161,通过预设的数据接口调用所述序列化工具。
具体地,将序列化工具预先进行封装,得到数据接口,系统中设置相应的数据接口,通过该数据接口即可调用序列化工具。
步骤S162,采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
具体地,将序列化工具按照文件模式中的序列化逻辑进行序列化处理,将序列化后的对象数据按照文件模式中的存储格式存储为文件,得到数组数据。
步骤S180,将序列化处理后的数组数据存储至所述数据空间中。
具体地,将数组数据存储至数据空间中,数组数据为经过protostuff序列化处理的数据,存储时占的内存少,减小了系统的内存压力。
在示例性地实施例中,所述方法还包括:
预先设置多个序列化逻辑和所述序列化逻辑对应的反序列化逻辑;将所述序列化逻辑和反序列化逻辑进行关联。
具体地,在序列化逻辑建立时,构建相应的反序列逻辑,通过查询序列化逻辑和反序列化逻辑两者的关联关系,即可调用序列化逻辑相应的反序列化逻辑进行序列化处理。序列化逻辑和反序列化逻辑的关联关系可以通过序号、标识符等进行建立。反序列化的逻辑为:使用objenesis实例化一个类的对象;通过对象的类构建对应的文件模式schema;使用给定的schema将byte数组和对象合并,并返回。
在示例性地实施例中,所述方法还包括:
将所述文件模式存储至区块链中。
具体地,将文件模式上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该文件模式,以便查证文件模式是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
实施例二
请继续参阅图2,示出了本发明Redis数据库的优化系统实施例二的程序模块示意图。在本实施例中,Redis数据库的优化系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述Redis数据库的优化方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述Redis数据库的优化系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
获取模块200,用于获取对象数据以及所述对象数据的类型。
具体地,对象数据包括待序列化的对象以及该对象对应的类型,对象表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象,该属性即为类型,类型可以表示为类。类是对象的模板,对象是类的实例,类只有通过对象才可以使用。对象数据为以Key-Value模式表示的数据,Key对应对象的字段,Value对应对象的属性。
分配模块202,用于基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间。
具体地,将对象数据在redis数据库中进行存储时,先在redis数据库中为对象数据分配数据空间,使用LinkedBuffer为对象数据分配一块默认大小的buffer空间。数据空间也可以理解为缓存空间,在本地存储中为对象数据设置缓存空间,将对象数据放置在该缓存空间中,使得redis数据库的使用率下降,线上功能也一切正常,系统性能也没有多大影响。
在示例性地实施例中,所述分配模块202还用于:
获取所述对象数据的类型的个数。
具体地,对象数据中,对象的类型可以为多属性类型,例如:该对象是班级,对应的多属性类型即为班级的人员,属性就包括:班级每个人的姓名、学号、年龄等。
根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据。
具体地,对象数据序列化存储时,会相应的将类型关联存储,需要根据对象数据的实际存储长度在redis数据库中为对象数据分配一定容量发数据空间,也可以根据类型,将多属性的对象数据和单属性的对象数据分配不同的数据空间,以便于进行数据管理。
构建模块204,用于根据所述对象数据的类型构建文件模式。
具体地,根据对象数据的类型构建文件模式Schema,Schema包含:对象进行序列化的序列化逻辑;对象进行反序列化的反序列化逻辑;对象必填字段的验证;对象字段名称到字段编号的映射;对象的实例化。对于现有的对象,必须使用protostuff-runtime来生成Schema。可以通过反射来缓存、使用Schema。在数据库中,schema为一组数据结构的逻辑集合,称之为schema对象,即对象数据的schema,schema对象最常用的为表和索引。在一个schema中,每个不同类型的schema对象有一个唯一的名称,例如:hr.employee表示表employee在hr这个schema中。序列化逻辑为:将对象数据转化为byte数组,按照key的数序依次映射为1位number的数字,也就是数字和value的对应关系,转为byte数组。对象数据包括有多个属性类型时,对象数据增加相应的value值的长度,以间隔符进行间隔,便于序列化时进行识别。而序列化处理时,byte数组同样以间隔符将对象数据的每个属性类型的序列化字段进行间隔,避免反序列化时出现混淆。
处理模块206,用于通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
具体地,预设的序列化工具为protostuff工具,将对象数据按照文件模式通过网络传输数据序列化工具protostuff将对象数据进行序列化处理,即,把对象数据的按照key的数序依次映射为1位number的数字,也就是数字和value的对应关系,转为byte数组,byte数组为经过protostuff序列化处理的数据,存储时占的内存少,减小了系统的内存压力。
在示例性地实施例中,所述处理模块206还用于:
通过预设的数据接口调用所述序列化工具。
具体地,将序列化工具预先进行封装,得到数据接口,系统中设置相应的数据接口,通过该数据接口即可调用序列化工具。
采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
具体地,将序列化工具按照文件模式中的序列化逻辑进行序列化处理,将序列化后的对象数据按照文件模式中的存储格式存储为文件,得到数组数据。
存储模块208,用于将序列化处理后的数组数据存储至所述数据空间中。
具体地,将数组数据存储至数据空间中,数组数据为经过protostuff序列化处理的数据,存储时占的内存少,减小了系统的内存压力。
实施例三
参阅图3,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及Redis数据库的优化系统20。其中:
本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例二的Redis数据库的优化系统20的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行Redis数据库的优化系统20,以实现实施例一的Redis数据库的优化方法。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述服务器2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述服务器2与外部终端相连,在所述服务器2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。需要指出的是,图3仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的所述Redis数据库的优化系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。
例如,图2示出了所述实现Redis数据库的优化系统20实施例二的程序模块示意图,该实施例中,所述Redis数据库的优化系统20可以被划分为所述获取模块200、所述分配模块202、所述构建模块204、所述处理模块206以及所述存储模块208。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述Redis数据库的优化系统20在所述计算机设备2中的执行过程。所述程序模块200-208的具体功能在实施例二中已有详细描述,在此不再赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于计算机程序,被处理器执行时实现:
步骤S100,获取对象数据以及所述对象数据的类型。
具体地,对象数据包括待序列化的对象以及该对象对应的类型,对象表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象,该属性即为类型,类型可以表示为类。类是对象的模板,对象是类的实例,类只有通过对象才可以使用。对象数据为以Key-Value模式表示的数据,Key对应对象的字段,Value对应对象的属性。
步骤S120,基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间。
具体地,将对象数据在redis数据库中进行存储时,先在redis数据库中为对象数据分配数据空间,使用LinkedBuffer为对象数据分配一块默认大小的buffer空间。数据空间也可以理解为缓存空间,在本地存储中为对象数据设置缓存空间,将对象数据放置在该缓存空间中,使得redis数据库的使用率下降,线上功能也一切正常,系统性能也没有多大影响。
在示例性地实施例中,所述步骤S120具体包括:
步骤S121,获取所述对象数据的类型的个数。
具体地,对象数据中,对象的类型可以为多属性类型,例如:该对象是班级,对应的多属性类型即为班级的人员,属性就包括:班级每个人的姓名、学号、年龄等。
步骤S122,根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据。
具体地,对象数据序列化存储时,会相应的将类型关联存储,需要根据对象数据的实际存储长度在redis数据库中为对象数据分配一定容量发数据空间,也可以根据类型,将多属性的对象数据和单属性的对象数据分配不同的数据空间,以便于进行数据管理。
步骤S140,根据所述对象数据的类型构建文件模式。
具体地,根据对象数据的类型构建文件模式Schema,Schema包含:对象进行序列化的序列化逻辑;对象进行反序列化的反序列化逻辑;对象必填字段的验证;对象字段名称到字段编号的映射;对象的实例化。对于现有的对象,必须使用protostuff-runtime来生成Schema。可以通过反射来缓存、使用Schema。在数据库中,schema为一组数据结构的逻辑集合,称之为schema对象,即对象数据的schema,schema对象最常用的为表和索引。在一个schema中,每个不同类型的schema对象有一个唯一的名称,例如:hr.employee表示表employee在hr这个schema中。序列化逻辑为:将对象数据转化为byte数组,按照key的数序依次映射为1位number的数字,也就是数字和value的对应关系,转为byte数组。对象数据包括有多个属性类型时,对象数据增加相应的value值的长度,以间隔符进行间隔,便于序列化时进行识别。而序列化处理时,byte数组同样以间隔符将对象数据的每个属性类型的序列化字段进行间隔,避免反序列化时出现混淆。
步骤S160,通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
具体地,预设的序列化工具为protostuff工具,将对象数据按照文件模式通过网络传输数据序列化工具protostuff将对象数据进行序列化处理,即,把对象数据的按照key的数序依次映射为1位number的数字,也就是数字和value的对应关系,转为byte数组,byte数组为经过protostuff序列化处理的数据,存储时占的内存少,减小了系统的内存压力。
在示例性地实施例中,所述步骤S160具体包括:
步骤S161,通过预设的数据接口调用所述序列化工具。
具体地,将序列化工具预先进行封装,得到数据接口,系统中设置相应的数据接口,通过该数据接口即可调用序列化工具。
步骤S162,采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
具体地,将序列化工具按照文件模式中的序列化逻辑进行序列化处理,将序列化后的对象数据按照文件模式中的存储格式存储为文件,得到数组数据。
步骤S180,将序列化处理后的数组数据存储至所述数据空间中。
具体地,将数组数据存储至数据空间中,数组数据为经过protostuff序列化处理的数据,存储时占的内存少,减小了系统的内存压力。
本发明实施例提供的Redis数据库的优化方法与系统,在redis数据库为对象数据分配数据空间,再根据对象数据的类型构建文件模式,通过序列化工具按照文件模式将对象数据进行序列化处理,得到数组数据,进而将数组数据存储在redis数据库的数据空间中,由于序列化的数组数据体积小,能够降低redis数据库的使用空间,进而降低内存数据的占用率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种Redis数据库的优化方法,其特征在于,包括:
获取对象数据以及所述对象数据的类型;
基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间;
根据所述对象数据的类型构建文件模式;
通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据,所述预设的序列化工具为protostuff工具;
将序列化处理后的数组数据存储至所述数据空间中;
所述基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间包括:
获取所述对象数据的类型的个数;
根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据;
所述通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据包括:
通过预设的数据接口调用所述序列化工具;
采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
2.根据权利要求1所述的Redis数据库的优化方法,其特征在于,所述方法还包括:
预先设置多个序列化逻辑和所述序列化逻辑对应的反序列化逻辑;
将所述序列化逻辑和反序列化逻辑进行关联。
3.根据权利要求1所述的Redis数据库的优化方法,其特征在于,所述方法还包括:
将所述文件模式存储至区块链中。
4.一种Redis数据库的优化系统,其特征在于,包括:
获取模块,用于获取对象数据以及所述对象数据的类型;
分配模块,用于基于所述对象数据的类型在redis数据库中为所述对象数据分配数据空间;
构建模块,用于根据所述对象数据的类型构建文件模式;
处理模块,用于通过预设的序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据,所述预设的序列化工具为protostuff工具;
存储模块,用于将序列化处理后的数组数据存储至所述数据空间中;
所述分配模块还用于:获取所述对象数据的类型的个数;根据所述类型的个数确定为所述对象数据分配的数据空间的容量,将所述容量的数据空间分配给所述对象数据;
所述处理模块还用于:通过预设的数据接口调用所述序列化工具;采用所述序列化工具按照所述文件模式对所述对象数据进行序列化处理,得到数组数据。
5.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-3中任一项所述的Redis数据库的优化方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1-3中任一项所述的Redis数据库的优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011616821.XA CN112597170B (zh) | 2020-12-31 | 2020-12-31 | Redis数据库的优化方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011616821.XA CN112597170B (zh) | 2020-12-31 | 2020-12-31 | Redis数据库的优化方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597170A CN112597170A (zh) | 2021-04-02 |
CN112597170B true CN112597170B (zh) | 2024-02-06 |
Family
ID=75206346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011616821.XA Active CN112597170B (zh) | 2020-12-31 | 2020-12-31 | Redis数据库的优化方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597170B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060230075A1 (en) * | 2005-04-06 | 2006-10-12 | Microsoft Corporation | Method and apparatus for exchanging data with a database |
CN107341262A (zh) * | 2017-07-14 | 2017-11-10 | 上海达梦数据库有限公司 | 数据库中对象类型列的序列化、反序列化方法及装置 |
CN108062272A (zh) * | 2017-11-06 | 2018-05-22 | 福建省天奕网络科技有限公司 | 一种数据库爆表检测方法及终端 |
CN110109894A (zh) * | 2019-03-22 | 2019-08-09 | 新奥特(北京)视频技术有限公司 | 非关系型数据库的实现方法、装置、存储介质和设备 |
WO2019153553A1 (zh) * | 2018-02-12 | 2019-08-15 | 平安科技(深圳)有限公司 | 跨广域网数据回导方法、装置、计算机设备及存储介质 |
CN111046045A (zh) * | 2019-12-13 | 2020-04-21 | 中国平安财产保险股份有限公司 | 处理数据倾斜的方法、装置、设备及存储介质 |
CN111241078A (zh) * | 2020-01-07 | 2020-06-05 | 网易(杭州)网络有限公司 | 数据分析系统、数据分析的方法及装置 |
-
2020
- 2020-12-31 CN CN202011616821.XA patent/CN112597170B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060230075A1 (en) * | 2005-04-06 | 2006-10-12 | Microsoft Corporation | Method and apparatus for exchanging data with a database |
CN107341262A (zh) * | 2017-07-14 | 2017-11-10 | 上海达梦数据库有限公司 | 数据库中对象类型列的序列化、反序列化方法及装置 |
CN108062272A (zh) * | 2017-11-06 | 2018-05-22 | 福建省天奕网络科技有限公司 | 一种数据库爆表检测方法及终端 |
WO2019153553A1 (zh) * | 2018-02-12 | 2019-08-15 | 平安科技(深圳)有限公司 | 跨广域网数据回导方法、装置、计算机设备及存储介质 |
CN110109894A (zh) * | 2019-03-22 | 2019-08-09 | 新奥特(北京)视频技术有限公司 | 非关系型数据库的实现方法、装置、存储介质和设备 |
CN111046045A (zh) * | 2019-12-13 | 2020-04-21 | 中国平安财产保险股份有限公司 | 处理数据倾斜的方法、装置、设备及存储介质 |
CN111241078A (zh) * | 2020-01-07 | 2020-06-05 | 网易(杭州)网络有限公司 | 数据分析系统、数据分析的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112597170A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111767143A (zh) | 交易数据处理方法、装置、设备及系统 | |
CN111563368A (zh) | 报表生成方法、装置、计算机设备和存储介质 | |
CN112541745A (zh) | 用户行为数据分析方法、装置、电子设备及可读存储介质 | |
CN111581210A (zh) | 数据的导入方法及系统 | |
CN112506486A (zh) | 搜索系统建立方法、装置、电子设备及可读存储介质 | |
CN112860737B (zh) | 数据查询方法、装置、电子设备及可读存储介质 | |
CN110599354A (zh) | 线上对账方法、系统、计算机设备和计算机可读存储介质 | |
CN112035355A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN108140022B (zh) | 数据查询方法和数据库系统 | |
CN112422450A (zh) | 计算机设备、服务请求的流量控制方法及装置 | |
CN114491047A (zh) | 多标签文本分类方法、装置、电子设备及存储介质 | |
CN111726266B (zh) | 热点数据分桶方法、系统和计算机设备 | |
CN112597170B (zh) | Redis数据库的优化方法与系统 | |
CN113010542A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN112035551A (zh) | 时间序列数据转换方法、系统、计算机设备和存储介质 | |
CN111159985A (zh) | 数据导出方法、装置、计算机设备和计算机可读存储介质 | |
CN112560416B (zh) | 页面图表生成方法、装置、电子设备及存储介质 | |
CN111880864B (zh) | 基于http的模型调用方法、系统、计算机设备和存储介质 | |
CN114328486A (zh) | 基于模型的数据质量核查方法及装置 | |
CN111131393B (zh) | 用户活跃度数据统计方法、电子装置及存储介质 | |
CN113190381A (zh) | 数据备份方法、系统、设备及存储介质 | |
CN113392131A (zh) | 数据处理方法、装置及计算机设备 | |
CN112597162A (zh) | 数据集采集方法、系统、设备及存储介质 | |
CN111580799A (zh) | 领域特定语言脚本拼装方法及系统 | |
CN110134691B (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 |