基于Redis数据库的减少内存消耗的方法、存储介质及设备技术

技术编号:22444405 阅读:26 留言:0更新日期:2019-11-02 04:22
本发明专利技术提供一种基于Redis数据库的减少内存消耗的方法,包括如下步骤:将字符串类型的数据转化成哈希类型的数据;以及根据哈希类型的数据的单个域值对的最大长度和域值对的个数,设置Redis数据库的内建参数,使得Redis数据库使用压缩列表的编码方式对哈希类型的数据进行存储。根据本发明专利技术的方法利用了Redis数据库内存的特点,在保证业务数据完整可用的情况下,大大减少了Redis数据库对内存的使用量,从而达到了优化内存的目的。本发明专利技术还涉及相关的计算机可读存储介质以及相关电子设备。

Method, storage medium and device of reducing memory consumption based on redis database

【技术实现步骤摘要】
基于Redis数据库的减少内存消耗的方法、存储介质及设备
本专利技术涉及软件工程领域,尤其涉及一种基于Redis数据库的减少内存消耗的方法,以及相关的计算机可读存储介质和电子设备。
技术介绍
在Redis数据库中,所有的数据都是存储在内存中的,而在一些关系型数据库中,例如Mysql,数据是存储在磁盘中的。相较于磁盘,内存资源显得更为重要。如何更高效的使用Redis数据库内存,一直是开发者在探索的问题。对于Redis数据库的内存优化,传统的做法是减少Redis数据库中键的长度,精简Redis数据库存储的数据内容。这种做法,在某些对业务数据要求不高的情况下确实可行,但是在大多数情况下,关键的业务数据必须要完整地存入Redis数据库中,导致开发者也无法更好地精简Redis数据库中键的长度以及数据的量,因此,急需一种能够大大减少Redis数据库内存消耗的方法。
技术实现思路
为了克服上述问题的至少一个方面,本专利技术实施例提供一种基于Redis数据库的减少内存消耗的方法、计算机可读存储介质及电子设备。根据本专利技术的一个方面,提供一种基于Redis数据库的减少内存消耗的方法,包括以下步骤:将字符串类型的数据转化成哈希类型的数据;以及根据哈希类型的数据的单个域值对的最大长度和域值对的个数,设置Redis数据库的内建参数,使得Redis数据库使用压缩列表的编码方式对哈希类型的数据进行存储。根据一些实施例,在将字符串类型的数据转化成哈希类型的数据的步骤之后还包括:设置第一阈值,使得单个哈希类型的数据的域的数量不超过第一阈值。根据一些实施例,第一阈值不超过1000。根据一些实施例,设置Redis数据库的内建参数的步骤包括:设置第二阈值,使得哈希类型的数据的域值对的个数不超过第二阈值;以及设置第三阈值,使得哈希类型的数据的单个域值对的最大长度不超过第三阈值。根据一些实施例,在设置Redis数据库的内建参数的步骤之后还包括以下步骤:删除哈希类型的数据中的过期的域。根据一些实施例,删除哈希类型的数据中的过期的域的步骤包括以下步骤:设定第四阈值,判断哈希类型的数据中的域的存在时间是否超过第四阈值,删除哈希类型的数据中的存在时间大于或等于第四阈值的域。根据一些实施例,判断哈希类型的数据中的域的存在时间是否超过第四阈值的步骤包括以下步骤:记录哈希类型的数据中的每个域的写入时间,通过定时任务扫描每个域的存在时间,将存在时间与第四阈值进行比较。根据本专利技术的另一个方面,提供一种计算机可读存储介质,其上存储有可执行指令,指令在由处理器执行时,可以实现根据上述实施例中的任一项的基于Redis数据库的减少内存消耗的方法的步骤。根据本专利技术的又一个方面,提供一种电子设备,其包括:存储器,用于存储可执行指令;以及处理器,用于执行存储器中存储的可执行指令,以实现根据上述实施例中的任一项的基于Redis数据库的减少内存消耗的方法的步骤。与现有技术相比,本专利技术具有以下优点:将Redis数据库中大量的中小型的字符串类型的数据转化为哈希类型的数据,结合压缩列表的编码方式对转化后的数据进行存储,精准的使用了Redis数据库内存的特点,在保证业务数据完整可用的情况下,大大减少了Redis数据库对内存的使用量,从而达到了优化内存的目的。附图说明通过下文中参照附图对本专利技术所作的描述,本专利技术的其它目的和优点将显而易见,并可帮助对本专利技术有全面的理解。图1是实施根据本专利技术实施例的基于Redis数据库的减少内存消耗的方法的整体流程图;图2是根据本专利技术实施例的计算机可读存储介质的结构示意图;图3是根据本专利技术实施例的电子设备的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本专利技术。除非另外定义,本专利技术使用的技术术语或者科学术语应当为本专利技术所属领域内具有一般技能的人士所理解的通常意义。本专利技术提供一种基于Redis数据库的减少内存消耗的方法,根据图1所示,该方法包括以下步骤:S101,将字符串类型的数据转化成哈希类型的数据。Redis数据库是一种使用较为广泛的非关系型数据库(NoSQL),在Redis数据库中,数据都存储在内存中。Redis数据库内部是一个键值对(key-value)存储系统,数据主要是通过键值对进行存储。Redis数据库支持存储的值的类型很多,基本的类型包括字符串(string)类型、链表(list)类型、集合(set)类型、有序集合(zset)类型和哈希(hash)类型。在多种存储方式中,字符串类型的存储是Redis数据库最基本的键值对存储类型,也是大多数系统最常见的数据存储场景。字符串类型的数据存储的具体做法是:通过设置指令将键和值进行配对,让键能够指向值对应的地址。例如:SETmedia:1234567987GETmedia:1234567>987上述例子中1234567可以是照片的地址,987可以是上述照片对应的用户,将每个照片地址作为键,用户地址作为值来组成键值对,并且让照片地址指向对应的用户地址,从而在输入照片地址时能够找到对应的用户地址。这种存储方式非常简便,但是会带来一个问题:大量的字符串类型的存储,将大量消耗Redis数据库的内存资源。有数据显示,使用字符串类型对数据进行存储,1,000,000张照片会用掉70MB的内存,300,000,000张照片就会用掉21GB的内存,由此可见,字符串类型的存储对内存的消耗是十分巨大的。在本专利技术实施例中,为了使哈希类型的键值对与Redis数据库的键值对进行区别,可以将哈希类型的“键值对”称作“域(field)值对”。在本专利技术实施例中,可以将字符串类型的数据统一存入一个哈希结构中,然后将存入哈希结构中的数据分段,每一段数据再分别使用一个哈希结构进行存储,这样就将字符串类型的数据转化成了哈希类型的数据。这里的哈希结构是指哈希类型存储数据使用的最小单元,可以通过人为设置长度参数来控制哈希结构的大小。在某些可能的实施例中,在将字符串类型的数据转化成哈希类型的数据的步骤之后还包括:设置第一阈值,使得单个哈希类型的数据的域的数量不超过第一阈值。在每个哈希结构中都存在着域值对,域和值都可以是文字、整数或者二进制数据。同一个哈希结构里面的每个域必须是独一无二、各不相同的,而域的值则没有这一要求,换句话说,不同域的值可以是重复的。哈希结构中的每个域都会消耗CPU,一旦域的数量过多,在Redis数据库内部会产生长列表,而长列表会导致CPU消耗严重,达不到减少内存消耗的效果,因此,需要使得单个哈希类型的数据的域的数量不超过第一阈值。有数据显示,单个哈希类型的数据的域的数量不超过1000时效果较好,例如,单个哈希类型的数据的域的数量可以是600、700或者800,当然不限于上述数字。所以在某些实施例中,第一阈值不超过1000。这样不仅可以减少内存的消耗,还可以提高寻址效率。S102,根据哈本文档来自技高网...

【技术保护点】
1.一种基于Redis数据库的减少内存消耗的方法,其特征在于,包括以下步骤:将字符串类型的数据转化成哈希类型的数据;以及根据所述哈希类型的数据的单个域值对的最大长度和域值对的个数,设置所述Redis数据库的内建参数,使得所述Redis数据库使用压缩列表的编码方式对所述哈希类型的数据进行存储。

【技术特征摘要】
1.一种基于Redis数据库的减少内存消耗的方法,其特征在于,包括以下步骤:将字符串类型的数据转化成哈希类型的数据;以及根据所述哈希类型的数据的单个域值对的最大长度和域值对的个数,设置所述Redis数据库的内建参数,使得所述Redis数据库使用压缩列表的编码方式对所述哈希类型的数据进行存储。2.根据权利要求1所述的方法,其特征在于,在所述将字符串类型的数据转化成哈希类型的数据的步骤之后还包括:设置第一阈值,使得单个哈希类型的数据的域的数量不超过所述第一阈值。3.根据权利要求2所述的方法,其特征在于,所述第一阈值不超过1000。4.根据权利要求1所述的方法,其特征在于,设置所述Redis数据库的内建参数的步骤包括:设置第二阈值,使得所述哈希类型的数据的域值对的个数不超过所述第二阈值;以及设置第三阈值,使得所述哈希类型的数据的单个域值对的最大长度不超过所述第三阈值。5.根据权利要求1所述的方法,其特征在于,在设置所述Redis数据库的内建参数的步骤之后还包...

【专利技术属性】
技术研发人员:张振铎张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1