CN111400308A - 缓存数据的处理方法、电子装置及可读存储介质 - Google Patents

缓存数据的处理方法、电子装置及可读存储介质 Download PDF

Info

Publication number
CN111400308A
CN111400308A CN202010109115.XA CN202010109115A CN111400308A CN 111400308 A CN111400308 A CN 111400308A CN 202010109115 A CN202010109115 A CN 202010109115A CN 111400308 A CN111400308 A CN 111400308A
Authority
CN
China
Prior art keywords
data
key value
key
value
target
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.)
Granted
Application number
CN202010109115.XA
Other languages
English (en)
Other versions
CN111400308B (zh
Inventor
陈真
易方彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202010109115.XA priority Critical patent/CN111400308B/zh
Publication of CN111400308A publication Critical patent/CN111400308A/zh
Application granted granted Critical
Publication of CN111400308B publication Critical patent/CN111400308B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据处理技术领域,揭露了一种缓存数据的处理方法,该方法包括:根据数据数量与目标key值位数之间的映射关系确定待缓存数据对应的目标key值的目标位数;将待缓存数据中每条数据对应的初始key值及初始value值组合得到的键值对作为第一键值对;根据初始key值、目标位数、第一算法得到目标key值,将第一键值对作为目标value值,将目标key值、目标value值组合得到的键值对作为第二键值对;根据目标key值、第二算法得到第二键值对对应的位置哈希值,将第二键值对存储至位置哈希值对应的缓存存储空间。本发明还提出一种电子装置以及一种计算机可读存储介质。本发明可提高缓存空间利用率,降低存储成本。

Description

缓存数据的处理方法、电子装置及可读存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种缓存数据的处理方法、电子装置及可读存储介质。
背景技术
随着互联网的发展,大量网络应用产生了海量的数据,为了提高查询效率,同时为避免直接与数据库操作而出现系统瓶颈,通常将数据放入缓存中,随着数据的增长,数据缓存成本的问题越加严峻,例如,五十亿的存储数据将需要1T多的缓存空间来存储key-value记录(因key-value分布式存储系统查询速度快、存放数据量大、支持高并发,故而当前普遍采用key-value数据库),同时由于存在大量key-value指针,使得存储膨胀率比较高。因此,亟需一种缓存数据的处理方法,以提高缓存空间利用率,降低存储成本。
发明内容
鉴于以上内容,有必要提供一种缓存数据的处理方法,旨在提高缓存空间利用率,降低存储成本。
本发明提供的缓存数据的处理方法,包括:
数据获取步骤:从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数;
第一组合步骤:确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对;
第二组合步骤:根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对;
数据存储步骤:根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
可选的,所述第一算法为md5算法,所述第二算法的计算公式为:
Figure BDA0002389341750000021
其中,Pi为待缓存数据中第i个第二键值对对应的位置哈希值,Ki为待缓存数据中第i个第二键值对的目标key值,T为待缓存数据中第二键值对的总数量。
可选的,所述第一组合步骤还包括:
获取所述待缓存数据中每条数据对应的初始key值,若某两条数据对应的初始key值相同,则删除所述两条数据中任意一条数据对应的第一键值对。
可选的,所述方法还包括:
为缓存中每个第二键值对设置有效时间段,实时监控每个第二键值对的访问记录,若某个指定第二键值对在有效时间段内被访问,则为所述指定第二键值对增加预设天数的有效时间。
可选的,所述方法还包括:
实时监控缓存的剩余内存容量,若所述剩余内存容量小于预设阈值,则向预设客户端发送预警信息。
此外,为实现上述目的,本发明还提供一种电子装置,该电子装置包括:存储器、处理器,所述存储器中存储有可在所述处理器上运行的缓存数据处理程序,所述缓存数据处理程序被所述处理器执行时实现如下步骤:
数据获取步骤:从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数;
第一组合步骤:确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对;
第二组合步骤:根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对;
数据存储步骤:根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
可选的,所述第一算法为md5算法,所述第二算法的计算公式为:
Figure BDA0002389341750000022
其中,Pi为待缓存数据中第i个第二键值对对应的位置哈希值,Ki为待缓存数据中第i个第二键值对的目标key值,T为待缓存数据中第二键值对的总数量。
可选的,所述缓存数据处理程序被所述处理器执行时所述第一组合步骤还包括:
获取所述待缓存数据中每条数据对应的初始key值,若某两条数据对应的初始key值相同,则删除所述两条数据中任意一条数据对应的第一键值对。
可选的,所述缓存数据处理程序被所述处理器执行时还实现如下步骤:
为缓存中每个第二键值对设置有效时间段,实时监控每个第二键值对的访问记录,若某个指定第二键值对在有效时间段内被访问,则为所述指定第二键值对增加预设天数的有效时间。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有缓存数据处理程序,所述缓存数据处理程序可被一个或者多个处理器执行,以实现上述缓存数据的处理方法的步骤。
相较现有技术,本发明通过根据数据数量与目标key值位数之间的映射关系确定待缓存数据对应的目标key值的目标位数,以使得待缓存数据中多条数据对应的初始key值经第一算法计算后得到的目标key值相同,相当于在目标key值下有多个初始key值,故而目标key值与目标value值组合得到的第二键值对的数量远远少于初始key值与初始value值组合得到的第一键值对,大大减少了待缓存数据的键值对的数量,降低了待缓存数据的存储空间;同时,为缓存中每个第二键值对设置有效时间段,若某一指定第二键值对在有效数据段内被访问,则为所述指定第二键值对增加预设天数的有效时间,这种方式可清除缓存中不常使用的冷数据,保留经常使用的热数据,使得缓存空间的利用率更高,故而本发明提高了缓存空间利用率,降低了存储成本。
附图说明
图1为本发明电子装置一实施例的示意图;
图2为图1中的缓存数据处理程序一实施例的程序模块图;
图3为本发明缓存数据的处理方法一实施例的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
如图1所示,为本发明电子装置1一实施例的示意图。电子装置1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述电子装置1可以是计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于云计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
在本实施例中,电子装置1包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,该存储器11中存储有缓存数据处理程序10,所述缓存数据处理程序10可被所述处理器12执行。图1仅示出了具有组件11-13以及缓存数据处理程序10的电子装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对电子装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
其中,存储器11包括内存及至少一种类型的可读存储介质。内存为电子装置1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是电子装置1的内部存储单元,例如该电子装置1的硬盘;在另一些实施例中,该非易失性存储介质也可以是电子装置1的外部存储设备,例如电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于电子装置1的操作系统和各类应用软件,例如存储本发明一实施例中的缓存数据处理程序10的代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子装置1的总体操作,例如执行与其他设备进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行缓存数据处理程序10等。
网络接口13可包括无线网络接口或有线网络接口,该网络接口13用于在所述电子装置1与客户端(图中未画出)之间建立通信连接。
可选的,所述电子装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子装置1中处理的信息以及用于显示可视化的用户界面。
在本发明的一实施例中,所述缓存数据处理程序10被所述处理器12执行时实现如下数据获取步骤、第一组合步骤、第二组合步骤及数据存储步骤。
数据获取步骤:从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数。
本实施例中,采用key-value(键值对)的存储方式来存储数据,key-value是一种NoSQL(No SQL,非关系型数据库)模型,因其易扩展、快读写、低成本、支持多种数据类型而被广泛应用。
所述数据数量与目标key值位数之间的映射关系可以如下表1所示,其中,以目标key值为16进制为例。
Figure BDA0002389341750000051
Figure BDA0002389341750000061
表1
第一组合步骤:确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对。
本实施例中,确定待缓存数据中每条数据对应的初始key值及初始value值的规则为:将每条数据中的第一预设字段与第二预设字段拼接得到的字段作为初始key值,将该条数据作为初始value值。例如,一条投保申请数据1中包括:投保人姓名、投保人身份证号码、投保人手机号码、投保类型、投保金额、投保年限,则可将投保人身份证号码与投保类型拼接后的字段作为初始key值,将数据1中的所有信息作为初始value值。
本实施例中,所述第一组合步骤还包括:
获取所述待缓存数据中每条数据对应的初始key值,若某两条数据对应的初始key值相同,则删除所述两条数据中任意一条数据对应的第一键值对。
例如,用户1在2020年1月1日填写了一份投保申请,生成数据1,因姓名填写错误,在2020年1月2日又填写了一份投保申请,生成数据2,因初始key值为身份证号码与投保类型拼接得到的,故数据1与数据2的初始key值是相同的,因姓名不是关键因素,可不关注,故可从待缓存数据中将数据1、数据2中任意一条数据对应的第一键值对删除,仅保留一条数据对应的第一键值对,以杜绝重复数据被缓存,在其它实施例中,若不考虑缓存压力,可将数据1、数据2对应的两个第一键值对都存储至缓存中。
第二组合步骤:根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对。
本实施例中,所述第一算法为md5算法,md5算法为哈希算法的一种,任意长度的输入经过md5算法转换后可得到固定长度的输出。
哈希表用于通过把关键码值映射到表中一个位置来访问记录,以加快查询速度。例如,一条数据为一个数据表中的第n条记录,若要查找这条数据,正常状况下,其时间复杂度为O(n),若利用哈希表来查找,其时间复杂度为O(1)。
通常情况下,数据以键值对的方式存储至redis中,然而,key值的个数越多,哈希表占用的空间越大,消耗的内存空间也越大,且大量指针为长整型,故内存存储的膨胀问题十分严重,为解决此问题,本实施例先建立初始key值与初始value值之间的第一键值对,然后将初始key值输入第一算法得到目标位数的目标key值,再将第一键值对作为目标value值,将目标key值与目标value值组合得到的键值对作为第二键值对。
本实施例的关键点在于,为目标key值确定合适的位数,通过控制目标key值的位数使得多条数据对应的初始key值经过md5算法计算后得到的目标key值相同,这样的话,相当于目标key值下挂了多个初始key值,故而目标key值与目标value值组合得到的第二键值对的数量远远少于初始key值与初始value值组合得到的第一键值对,大大减少了待缓存数据的键值对的数量,降低了待缓存数据的存储空间,比如若平均每个目标key值下挂10个初始key值,理论上将减少90%的redis key的个数,则大大减少了哈希表的存储空间。本实施例表1所示的映射关系是按照每个目标key值下挂10个初始key值计算得到的。
同时,因通过md5计算后得到的目标key值为16进制字符,为缩短目标key值的长度,可利用ASCII码字符类型(ASCII码数值在0~127之间,相当于128进制)来填充,使得目标key值的长度可缩短一半。
数据存储步骤:根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
本实施例中,所述第二算法的计算公式为:
Figure BDA0002389341750000071
其中,Pi为待缓存数据中第i个第二键值对对应的位置哈希值,Ki为待缓存数据中第i个第二键值对的目标key值,T为待缓存数据中第二键值对的总数量。
本实施例中,所述缓存数据处理程序10被所述处理器12执行时还实现如下步骤:
为缓存中每个第二键值对设置有效时间段,实时监控每个第二键值对的访问记录,若某个指定第二键值对在有效时间段内被访问,则为所述指定第二键值对增加预设天数的有效时间。
例如,数据1对应的第二键值对从2020年1月1日起的有效时间段为10天,在2020年1月5日时该第二键值对被访问,则将该第二键值对的有效时间段增加10天,该第二键值对的失效时间为2020年1月25日。
本实施例中,所述缓存数据处理程序10被所述处理器12执行时还实现如下步骤:
若当前时间超出缓存中某一第二键值对的有效时间段,则从缓存中删除该第二键值对。
通过上述方式,可清理缓存中不常使用的冷数据,仅保留经常使用的热数据,提高了缓存空间利用率。
另外,内存碎片也是消耗缓存空间的一个重要原因,碎片的原因在于内存无法对齐,数据失效删除后,内存无法重新分配造成的,通过md5算法得到的目标key值,保证了redis key是等长的,很大程度上解决了内存碎片化的问题。
本实施例中,所述缓存数据处理程序10被所述处理器12执行时还实现如下步骤:
实时监控缓存的剩余内存容量,若所述剩余内存容量小于预设阈值,则向预设客户端发送预警信息。
由上述实施例可知,本发明提出的电子装置1,首先,根据数据数量与目标key值位数之间的映射关系确定待缓存数据对应的目标key值的目标位数,以使得待缓存数据中多条数据对应的初始key值经第一算法计算后得到的目标key值相同,相当于在目标key值下有多个初始key值,故而目标key值与目标value值组合得到的第二键值对的数量远远少于初始key值与初始value值组合得到的第一键值对,大大减少了待缓存数据的键值对的数量,降低了待缓存数据的存储空间;同时,为缓存中每个第二键值对设置有效时间段,若某一指定第二键值对在有效数据段内被访问,则为所述指定第二键值对增加预设天数的有效时间,这种方式可清除缓存中不常使用的冷数据,保留经常使用的热数据,使得缓存空间的利用率更高,故而本发明提高了缓存空间利用率,降低了存储成本。
在其他实施例中,缓存数据处理程序10还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述缓存数据处理程序10在电子装置1中的执行过程。
如图2所示,为图1中的缓存数据处理程序10一实施例的程序模块图。
在本发明的一个实施例中,缓存数据处理程序10包括数据获取模块110、第一组合模块120、第二组合模块130及数据存储模块140,示例性地:
所述数据获取模块110,用于从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数;
所述第一组合模块120,用于确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对;
所述第二组合模块130,用于根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对;
所述数据存储模块140,用于根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
上述数据获取模块110、第一组合模块120、第二组合模块130及数据获取模块140等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
如图3所示,为本发明缓存数据的处理方法一实施例的流程图,该缓存数据的处理方法包括步骤S1-S4。
S1、从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数。
本实施例中,采用key-value(键值对)的存储方式来存储数据,key-value是一种NoSQL(No SQL,非关系型数据库)模型,因其易扩展、快读写、低成本、支持多种数据类型而被广泛应用。
所述数据数量与目标key值位数之间的映射关系可以如上表1所示,其中,以目标key值为16进制为例。
S2、确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对。
本实施例中,确定待缓存数据中每条数据对应的初始key值及初始value值的规则为:将每条数据中的第一预设字段与第二预设字段拼接得到的字段作为初始key值,将该条数据作为初始value值。例如,一条投保申请数据1中包括:投保人姓名、投保人身份证号码、投保人手机号码、投保类型、投保金额、投保年限,则可将投保人身份证号码与投保类型拼接后的字段作为初始key值,将数据1中的所有信息作为初始value值。
本实施例中,所述步骤S2还包括:
获取所述待缓存数据中每条数据对应的初始key值,若某两条数据对应的初始key值相同,则删除所述两条数据中任意一条数据对应的第一键值对。
例如,用户1在2020年1月1日填写了一份投保申请,生成数据1,因姓名填写错误,在2020年1月2日又填写了一份投保申请,生成数据2,因初始key值为身份证号码与投保类型拼接得到的,故数据1与数据2的初始key值是相同的,因姓名不是关键因素,可不关注,故可从待缓存数据中将数据1、数据2中任意一条数据对应的第一键值对删除,仅保留一条数据对应的第一键值对,以杜绝重复数据被缓存,在其它实施例中,若不考虑缓存压力,可将数据1、数据2对应的两个第一键值对都存储至缓存中。
S3、根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对。
本实施例中,所述第一算法为md5算法,md5算法为哈希算法的一种,任意长度的输入经过md5算法转换后可得到固定长度的输出。
哈希表用于通过把关键码值映射到表中一个位置来访问记录,以加快查询速度。例如,一条数据为一个数据表中的第n条记录,若要查找这条数据,正常状况下,其时间复杂度为O(n),若利用哈希表来查找,其时间复杂度为O(1)。
通常情况下,数据以键值对的方式存储至redis中,然而,key值的个数越多,哈希表占用的空间越大,消耗的内存空间也越大,且大量指针为长整型,故内存存储的膨胀问题十分严重,为解决此问题,本实施例先建立初始key值与初始value值之间的第一键值对,然后将初始key值输入第一算法得到目标位数的目标key值,再将第一键值对作为目标value值,将目标key值与目标value值组合得到的键值对作为第二键值对。
本实施例的关键点在于,为目标key值确定合适的位数,通过控制目标key值的位数使得多条数据对应的初始key值经过md5算法计算后得到的目标key值相同,这样的话,相当于目标key值下挂了多个初始key值,故而目标key值与目标value值组合得到的第二键值对的数量远远少于初始key值与初始value值组合得到的第一键值对,大大减少了待缓存数据的键值对的数量,降低了待缓存数据的存储空间,比如若平均每个目标key值下挂10个初始key值,理论上将减少90%的redis key的个数,则大大减少了哈希表的存储空间。本实施例表1所示的映射关系是按照每个目标key值下挂10个初始key值计算得到的。
同时,因通过md5计算后得到的目标key值为16进制字符,为缩短目标key值的长度,可利用ASCII码字符类型(ASCII码数值在0~127之间,相当于128进制)来填充,使得目标key值的长度可缩短一半。
S4、根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
本实施例中,所述第二算法的计算公式为:
Figure BDA0002389341750000111
其中,Pi为待缓存数据中第i个第二键值对对应的位置哈希值,Ki为待缓存数据中第i个第二键值对的目标key值,T为待缓存数据中第二键值对的总数量。
本实施例中,所述缓存数据的处理方法还包括:
为缓存中每个第二键值对设置有效时间段,实时监控每个第二键值对的访问记录,若某个指定第二键值对在有效时间段内被访问,则为所述指定第二键值对增加预设天数的有效时间。
例如,数据1对应的第二键值对从2020年1月1日起的有效时间段为10天,在2020年1月5日时该第二键值对被访问,则将该第二键值对的有效时间段增加10天,该第二键值对的失效时间为2020年1月25日。
本实施例中,所述缓存数据的处理方法还包括:
若当前时间超出缓存中某一第二键值对的有效时间段,则从缓存中删除该第二键值对。
通过上述方式,可清理缓存中不常使用的冷数据,仅保留经常使用的热数据,提高了缓存空间利用率。
另外,内存碎片也是消耗缓存空间的一个重要原因,碎片的原因在于内存无法对齐,数据失效删除后,内存无法重新分配造成的,通过md5算法得到的目标key值,保证了redis key是等长的,很大程度上解决了内存碎片化的问题。
本实施例中,所述缓存数据的处理方法还包括:
实时监控缓存的剩余内存容量,若所述剩余内存容量小于预设阈值,则向预设客户端发送预警信息。
由上述实施例可知,本发明提出的缓存数据的处理方法,首先,根据数据数量与目标key值位数之间的映射关系确定待缓存数据对应的目标key值的目标位数,以使得待缓存数据中多条数据对应的初始key值经第一算法计算后得到的目标key值相同,相当于在目标key值下有多个初始key值,故而目标key值与目标value值组合得到的第二键值对的数量远远少于初始key值与初始value值组合得到的第一键值对,大大减少了待缓存数据的键值对的数量,降低了待缓存数据的存储空间;同时,为缓存中每个第二键值对设置有效时间段,若某一指定第二键值对在有效数据段内被访问,则为所述指定第二键值对增加预设天数的有效时间,这种方式可清除缓存中不常使用的冷数据,保留经常使用的热数据,使得缓存空间的利用率更高,故而本发明提高了缓存空间利用率,降低了存储成本。
此外,本发明实施例还提出一种计算机可读存储介质,计算机可读存储介质可以是硬盘、多媒体卡、SD卡、闪存卡、SMC、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器等中的任意一种或者几种的任意组合。计算机可读存储介质中包括缓存数据处理程序10,所述缓存数据处理程序10被处理器执行时实现如下操作:
从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数;
确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对;
根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对;
根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
本发明之计算机可读存储介质的具体实施方式与上述缓存数据的处理方法以及电子装置1的具体实施方式大致相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种缓存数据的处理方法,应用于电子装置,其特征在于,所述方法包括:
数据获取步骤:从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数;
第一组合步骤:确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对;
第二组合步骤:根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对;
数据存储步骤:根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
2.如权利要求1所述的缓存数据的处理方法,其特征在于,所述第一算法为md5算法,所述第二算法的计算公式为:
Figure FDA0002389341740000011
其中,Pi为待缓存数据中第i个第二键值对对应的位置哈希值,Ki为待缓存数据中第i个第二键值对的目标key值,T为待缓存数据中第二键值对的总数量。
3.如权利要求1所述的缓存数据的处理方法,其特征在于,所述第一组合步骤还包括:
获取所述待缓存数据中每条数据对应的初始key值,若某两条数据对应的初始key值相同,则删除所述两条数据中任意一条数据对应的第一键值对。
4.如权利要求3所述的缓存数据的处理方法,其特征在于,所述方法还包括:
为缓存中每个第二键值对设置有效时间段,实时监控每个第二键值对的访问记录,若某个指定第二键值对在有效时间段内被访问,则为所述指定第二键值对增加预设天数的有效时间。
5.如权利要求1-4任一项所述的缓存数据的处理方法,其特征在于,所述方法还包括:
实时监控缓存的剩余内存容量,若所述剩余内存容量小于预设阈值,则向预设客户端发送预警信息。
6.一种电子装置,其特征在于,该电子装置包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的缓存数据处理程序,所述缓存数据处理程序被所述处理器执行时实现如下步骤:
数据获取步骤:从数据库中获取待缓存数据,确定所述待缓存数据的数据总量,根据数据数量与目标key值位数之间的映射关系确定所述待缓存数据对应的目标key值的目标位数;
第一组合步骤:确定所述待缓存数据中每条数据对应的初始key值及初始value值,将所述初始key值、初始value值组合得到的键值对作为第一键值对;
第二组合步骤:根据所述初始key值、所述目标位数、第一算法得到目标key值,将所述第一键值对作为目标value值,将所述目标key值、所述目标value值组合得到的键值对作为第二键值对;
数据存储步骤:根据所述目标key值、第二算法得到所述第二键值对对应的位置哈希值,将所述第二键值对存储至所述位置哈希值对应的缓存存储空间。
7.如权利要求6所述的电子装置,其特征在于,所述第一算法为md5算法,所述第二算法的计算公式为:
Figure FDA0002389341740000021
其中,Pi为待缓存数据中第i个第二键值对对应的位置哈希值,Ki为待缓存数据中第i个第二键值对的目标key值,T为待缓存数据中第二键值对的总数量。
8.如权利要求6所述的电子装置,其特征在于,所述缓存数据处理程序被所述处理器执行时所述第一组合步骤还包括:
获取所述待缓存数据中每条数据对应的初始key值,若某两条数据对应的初始key值相同,则删除所述两条数据中任意一条数据对应的第一键值对。
9.如权利要求8所述的电子装置,其特征在于,所述缓存数据处理程序被所述处理器执行时还实现如下步骤:
为缓存中每个第二键值对设置有效时间段,实时监控每个第二键值对的访问记录,若某个指定第二键值对在有效时间段内被访问,则为所述指定第二键值对增加预设天数的有效时间。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有缓存数据处理程序,所述缓存数据处理程序可被一个或者多个处理器执行,以实现如权利要求1至5任一项所述的缓存数据的处理方法的步骤。
CN202010109115.XA 2020-02-21 2020-02-21 缓存数据的处理方法、电子装置及可读存储介质 Active CN111400308B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010109115.XA CN111400308B (zh) 2020-02-21 2020-02-21 缓存数据的处理方法、电子装置及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010109115.XA CN111400308B (zh) 2020-02-21 2020-02-21 缓存数据的处理方法、电子装置及可读存储介质

Publications (2)

Publication Number Publication Date
CN111400308A true CN111400308A (zh) 2020-07-10
CN111400308B CN111400308B (zh) 2023-05-26

Family

ID=71434019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010109115.XA Active CN111400308B (zh) 2020-02-21 2020-02-21 缓存数据的处理方法、电子装置及可读存储介质

Country Status (1)

Country Link
CN (1) CN111400308B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069162A (zh) * 2020-11-10 2020-12-11 太平金融科技服务(上海)有限公司 流计算的数据处理方法、装置、计算机设备和存储介质
CN112817973A (zh) * 2021-01-22 2021-05-18 平安普惠企业管理有限公司 数据处理方法、装置、数据处理设备及存储介质
CN113342813A (zh) * 2021-06-09 2021-09-03 南京冰鉴信息科技有限公司 键值数据处理方法、装置、计算机设备及可读存储介质
CN113535857A (zh) * 2021-08-04 2021-10-22 阿波罗智联(北京)科技有限公司 数据同步方法及装置
CN113779453A (zh) * 2021-01-06 2021-12-10 北京沃东天骏信息技术有限公司 缓存更新方法和装置
CN114357337A (zh) * 2022-01-11 2022-04-15 平安普惠企业管理有限公司 缓存管理方法、装置、设备及存储介质
CN115599711A (zh) * 2022-11-30 2023-01-13 苏州浪潮智能科技有限公司(Cn) 缓存数据处理方法、系统、装置、设备及计算机存储介质
CN117271395A (zh) * 2023-11-22 2023-12-22 民航成都信息技术有限公司 一种数据缓存方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106153A (zh) * 2013-02-20 2013-05-15 哈尔滨工业大学 基于访问密度的web缓存替换方法
CN106909558A (zh) * 2015-12-23 2017-06-30 中国电信股份有限公司 数据隔离以及查询的方法和装置
CN107391632A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据库存储处理方法、装置、计算设备及计算机存储介质
CN109656886A (zh) * 2018-12-26 2019-04-19 百度在线网络技术(北京)有限公司 基于键值对的文件系统实现方法、装置、设备和存储介质
CN110222048A (zh) * 2019-05-06 2019-09-10 平安科技(深圳)有限公司 序列生成方法、装置、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106153A (zh) * 2013-02-20 2013-05-15 哈尔滨工业大学 基于访问密度的web缓存替换方法
CN106909558A (zh) * 2015-12-23 2017-06-30 中国电信股份有限公司 数据隔离以及查询的方法和装置
CN107391632A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据库存储处理方法、装置、计算设备及计算机存储介质
CN109656886A (zh) * 2018-12-26 2019-04-19 百度在线网络技术(北京)有限公司 基于键值对的文件系统实现方法、装置、设备和存储介质
CN110222048A (zh) * 2019-05-06 2019-09-10 平安科技(深圳)有限公司 序列生成方法、装置、计算机设备及存储介质

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069162A (zh) * 2020-11-10 2020-12-11 太平金融科技服务(上海)有限公司 流计算的数据处理方法、装置、计算机设备和存储介质
CN112069162B (zh) * 2020-11-10 2021-02-26 太平金融科技服务(上海)有限公司 流计算的数据处理方法、装置、计算机设备和存储介质
CN113779453A (zh) * 2021-01-06 2021-12-10 北京沃东天骏信息技术有限公司 缓存更新方法和装置
CN112817973A (zh) * 2021-01-22 2021-05-18 平安普惠企业管理有限公司 数据处理方法、装置、数据处理设备及存储介质
CN113342813A (zh) * 2021-06-09 2021-09-03 南京冰鉴信息科技有限公司 键值数据处理方法、装置、计算机设备及可读存储介质
CN113342813B (zh) * 2021-06-09 2024-01-26 南京冰鉴信息科技有限公司 键值数据处理方法、装置、计算机设备及可读存储介质
CN113535857A (zh) * 2021-08-04 2021-10-22 阿波罗智联(北京)科技有限公司 数据同步方法及装置
CN114357337A (zh) * 2022-01-11 2022-04-15 平安普惠企业管理有限公司 缓存管理方法、装置、设备及存储介质
CN115599711A (zh) * 2022-11-30 2023-01-13 苏州浪潮智能科技有限公司(Cn) 缓存数据处理方法、系统、装置、设备及计算机存储介质
CN117271395A (zh) * 2023-11-22 2023-12-22 民航成都信息技术有限公司 一种数据缓存方法、装置、电子设备及存储介质
CN117271395B (zh) * 2023-11-22 2024-02-06 民航成都信息技术有限公司 一种数据缓存方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111400308B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
CN111400308B (zh) 缓存数据的处理方法、电子装置及可读存储介质
CN112765271B (zh) 区块链交易索引的存储方法、装置、计算机设备及介质
CN108388599B (zh) 电子装置、数据迁移及调用方法及存储介质
CN108388604B (zh) 用户权限数据管理装置、方法及计算机可读存储介质
WO2019148720A1 (zh) 电子装置、数据存储方法及存储介质
CN107665095B (zh) 存储器空间管理的设备、方法及可读存储介质
CN111580965A (zh) 数据请求的处理方法及系统
CN112860737B (zh) 数据查询方法、装置、电子设备及可读存储介质
CN115757495A (zh) 缓存数据处理方法、装置、计算机设备及存储介质
CN112506486A (zh) 搜索系统建立方法、装置、电子设备及可读存储介质
CN115455058A (zh) 缓存数据的处理方法、装置、计算机设备及存储介质
CN115757492A (zh) 一种热点数据的处理方法、装置、计算机设备及存储介质
CN116578746A (zh) 对象去重方法及装置
CN111723077A (zh) 数据字典维护方法、装置及计算机设备
CN108763341B (zh) 电子装置、自动化建表方法及存储介质
CN113268440B (zh) 缓存淘汰方法及系统
CN111291083B (zh) 网页源码数据处理方法、装置及计算机设备
CN116842012A (zh) 一种Redis集群的分片存储方法、装置、设备及存储介质
WO2019071896A1 (zh) 网页地址去重方法、电子设备及计算机可读存储介质
CN111475468A (zh) 新增系统的日志接入方法、装置、设备及存储介质
CN113590703B (zh) Es数据导入方法、装置、电子设备及可读存储介质
CN113342822B (zh) 基于多类型数据库的数据查询方法、装置、电子设备及介质
CN112685078A (zh) 接口文档生成与查询方法、装置及计算机可读存储介质
CN110413644B (zh) 一种数据缓存方法、电子装置及计算机可读存储介质
CN111131393A (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