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

一种数据存储方法、装置、计算设备和存储介质

文献发布时间:2023-06-19 13:26:15


一种数据存储方法、装置、计算设备和存储介质

技术领域

本发明涉及数据存储技术领域,具体涉及一种数据存储方法、装置、计算设备和存储介质。

背景技术

通过内存存储数据的数据库(如Redis数据库)在读写性能有极大提升,在提升用户体验、提高系统吞吐量(Transactions Per Second,TPS)上,内存存储型数据库的优势明显。

业务系统在使用内存存储型数据库时,在内存存储型数据库集群搭建之初,空间就已经分配好了,随着业务增长,内存存储型数据库的剩余存储空间将会越来越少,在存储达到瓶颈前,需要手动扩容来保证业务的稳定运行,而占用内存存储型数据库存储空间的业务数据中,又有极多的数据是可以清理删除的,这部分数据的清理并不会影响业务系统的稳定运行。但是一套业务系统往往分很多子应用系统,每个子应用又糅合了很多不同的业务,数据的清理工作往往极其复杂,稍有不慎将会导致严重的系统故障。

以Redis数据库为例,图1为现有技术中Redis数据库应用示意图,如图1所示,业务系统在Redis数据库中存储的数据分为永久数据和临时数据两种,永久数据永久占用空间,临时数据在存储时需要设置一个固定时间的存储时长,业务系统只能在这个固定时间内访问Redis中的数据,超过这个固定时间后,需要从关系型数据库(如:MySQL数据库)中重新获取。针对这两种类型的数据,永久数据会导致大量的垃圾数据产生,临时数据的固定时长会导致频繁穿透关系型数据库获取数据,影响用户体验。

现有技术方案的两个应用案例包括:案例一,将一个视频文件存储在Redis数据库中,占用空间100M,作为永久数据存储,此后无论是否有用户访问此视频文件,此视频文件都将永久占用100M的存储空间,大量的类似数据将会把Redis的存储空间占用殆尽;

案例二,将一个视频文件存储在Redis数据库中,占用空间100M,作为临时数据存储,设置存储时长为7天,7天之内的用户访问,都将从Redis数据库中获取数据用户,7天后再次访问,则需要从关系型数据库中重新拉取并加载进Redis数据库中,当再次加载完数据之后的7天内,用户可以从Redis数据库中获取数据,再过7天之后,仍旧需要从关系型数据库中重新拉取加载,如此循环。

然而,上述案例一和案例二中加载入Redis的永久数据,永久占用Redis空间,资源利用率低,且操作耗时较长;具有固定时间的临时数据,如用户使用一次之后便不再使用,则在预设的固定时间内必定占用Redis空间,达到预设固定时间后,才会被Redis清理释放空间,如在数据清理后,用户再次使用,此时需要再次从关系型数据库中获取数据,从而导致用户体验较差。

发明内容

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据存储方法、装置、计算设备和存储介质。

根据本发明的一个方面,提供了一种数据存储方法,包括:

从数据库中筛选出待管理的存储数据,并设置多个调整时刻;

在第t个调整时刻,依据用户针对所述待管理的存储数据的访问行为,对所述待管理的存储数据的剩余存储时长进行调整,其中t大于1;

若所述待管理的存储数据调整后的剩余存储时长小于或等于零,则从所述数据库中删除所述待管理的存储数据。

根据本发明的另一方面,提供了一种数据存储装置,包括:

初始模块,用于从数据库中筛选出待管理的存储数据,并设置多个调整时刻;

调整模块,用于在第t个调整时刻,依据用户针对所述待管理的存储数据的访问行为,对所述待管理的存储数据的剩余存储时长进行调整,其中t大于1;

数据处理模块,用于若所述待管理的存储数据调整后的剩余存储时长小于或等于零,则从所述数据库中删除所述待管理的存储数据。

根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述一种数据存储方法对应的操作。

根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述一种数据存储方法对应的操作。

根据本发明的一种数据存储方法、装置、计算设备和存储介质,该方法通过从数据库中筛选出待管理的存储数据,并设置多个调整时刻;在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1;若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。本发明不存储永久数据而是存储临时数据,排除存储空间被永久占用的可能;通过设置多个调整时刻,根据待管理的存储数据是否有用户访问对待管理的存储数据的剩余存储时长进行调整,从而不采用固定时间存储临时数据,有用户访问则动态延长待管理的存储数据的剩余存储时长,可以有效减少查询数据库的次数,如没有用户访问则动态缩短待管理的存储数据的剩余存储时长或删除待管理的存储数据,可以达到快速释放空间的目的,提高存储资源利用率,提升用户体验。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明现有技术中Redis数据库应用示意图;

图2示出了本发明实施例提供的一种数据存储方法的流程图;

图3示出了本发明实施例提供的一种数据存储方法的Redis数据库应用示意图;

图4示出了本发明实施例提供的一种数据存储方法的数据时间曲线图;

图5示出了本发明实施例提供的一种数据存储装置的结构示意图;

图6示出了本发明实施例提供的计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

图2示出了本发明一种数据存储方法实施例的流程图,如图2所示,该方法包括以下步骤:

步骤S210:从数据库中筛选出待管理的存储数据,并设置多个调整时刻。

在一种可选的方式中,数据库具体包括内存存储型数据库等。

传统的数据库为关系型数据库,是通过磁盘存储数据的,而本实施例的数据库具体可为使用内存存储数据的数据库。以Redis数据库为例,Redis数据库是使用内存存储数据的,相对于关系型数据库的磁盘存储数据,其读写性能有极大提升,在提升用户体验、提高系统吞吐量(Transactions Per Second,TPS)上,Redis数据库的优势明显。

为了对内存存储型数据库占用空间过大的存储数据进行剩余存储时长计算,以便重新对其进行管理,从而腾出内存存储型数据库空间,步骤S210进一步包括:从内存存储型数据库中筛选出数据大小大于预设阈值的存储数据作为待管理的存储数据;其中,该预设阈值可以为存储数据占用空间大小,如100M等。

本实施例以Redis数据库为例对一种数据存储方法加以说明,图3为本实施例的数据存储方法的Redis数据库应用示意图,如图3所示,与现有技术相比,本实施例通过增设Redis数据存储管理器,对待管理的存储数据进行有效管理;首先在Redis数据存储管理器配置需要数据管理的存储空间阈值,依据存储空间阈值设置预设阈值,将从Redis数据库中筛选出数据大小大于预设阈值的存储数据作为待管理的存储数据,交由Redis数据存储管理器进行管理,且待管理的存储数据不作为永久数据存储,而仅作为临时数据存储,从而不采用固定时间存储待管理的存储数据,避免存储空间被永久占用。

进一步地,筛选出待管理的存储数据后,需对Redis数据存储管理器进行初始化配置,从而启动Redis数据存储管理器;具体地说,通过设置多个调整时刻,每相邻两个调整时刻之间为一个调整区间a,例如,第0个调整时刻-第1个调整时刻为调整区间1,第1个调整时刻-第2个调整时刻为调整区间2,以此类推。在一种可选的方式中,多个调整时刻是从待管理的存储数据的初始存入时刻起每隔第二预设时长设置的;本领域技术人员可依据实际需求设置第二预设时长,若第二预设时长设置为1分钟,则每隔一分钟设置一个调整时刻;除此之外,还需要预设待管理的存储数据的存储时长峰值e以及第一预设时长f等。

步骤S220:在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1。

在一种可选的方式中,步骤S220进一步包括:依据用户针对待管理的存储数据的访问行为,确定第t个调整时刻对应的起始调整参数;根据起始调整参数、预设存储时长峰值、第一预设时长以及第t个调整时刻与第0个调整时刻之间的时长,计算得到第t个调整时刻对应的待管理的存储数据调整后的剩余存储时长;其中,第0个调整时刻为待管理的存储数据的初始存入时刻。

具体地说,计算剩余存储时长的公式如下式(1):

其中,(x′,y′)为第t个调整时刻对应的起始调整参数,e为预设存储时长峰值,f为第一预设时长,x表示第t个调整时刻与第0个调整时刻之间的时长,y为本次调整后的剩余存储时长。

需要特别说明的是,x表示第t个调整时刻与第0个调整时刻之间的时长,若每两个相邻调整时刻之间的时长a设置为1分钟,表示每间隔1分钟计算一次剩余存储时长y,该调整区间a的值越小,剩余存储时长调整越精细;存储时长峰值e代表式(1)推导出的剩余存储时长y的最大值,若式(1)推导出的y最大值为30分钟,则将存储时长峰值e设置为30分钟;第一预设时长f依据预先计算的待管理的存储数据从初始存储时刻达到存储时长峰值e的时长来确定,可以理解为从待管理的存储数据存入的时刻(即第0个调整时刻)到存储时长峰值e之间的时间差,例如,按照式(1)推导得出第一预设时长f为10分钟,即将第一预设时长f设置为10分钟,第0个调整时刻-第1个调整时刻之间时长设置为1分钟(即调整区间时长为1分钟),则如果在11点存入待管理的存储数据,每一分钟计算一次剩余存储时长,则在11点10分(即第十次计算)的时候得到存储时长峰值e。

在一种可选的方式中,步骤S220进一步包括:依据用户针对待管理的存储数据在第t个调整时刻与第t-1个调整时刻之间以及在第t-1个调整时刻与第t-2个调整时刻之间是否存在访问行为,确定第t个调整时刻对应的起始调整参数。

在一种可选的方式中,步骤S220进一步包括:若在第t个调整时刻与第t-1个调整时刻之间存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间存在访问行为,或者,在第t个调整时刻与第t-1个调整时刻之间未存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间未存在访问行为,则将第t-1个调整时刻对应的起始调整参数作为第t个调整时刻对应的起始调整参数;若在第t个调整时刻与第t-1个调整时刻之间未存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间存在访问行为,则根据第t-1个调整时刻与第0个调整时刻之间的时长、第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长、预设存储时长峰值以及第一预设时长,确定第t个调整时刻对应的起始调整参数;若在第t个调整时刻与第t-1个调整时刻之间存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间未存在访问行为,则根据第t-1个调整时刻与第0个调整时刻之间的时长以及第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长,确定第t个调整时刻对应的起始调整参数;其中,第1个调整时刻对应的起始调整参数为预设参数。

具体地说,第0个调整时刻为待管理的存储数据的初始存入时刻,第1个调整时刻对应的起始调整参数(x′,y′)为预设参数,预设参数一般设置为(0,0),若在第t个调整时刻与第t-1个调整时刻之间存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间存在访问行为,则剩余存储时长持续增长,则第t个调整时刻对应的(x′,y′)一直按预设参数(0,0)计算;若在第t个调整时刻与第t-1个调整时刻之间未存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间未存在访问行为,则剩余存储时长持续衰减,则将第t-1个调整时刻对应的起始调整参数作为第t个调整时刻对应的起始调整参数;

若在第t个调整时刻与第t-1个调整时刻之间未存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间存在访问行为,则第t个调整时刻计算的剩余存储时长将发生衰减,则在进行第t次计算时需将第t个调整时刻对应的(x′,y′)重置,计算方法为依据第t-1个调整时刻与第0个调整时刻之间的时长以及第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长确定参数(m,n),其中,m为第t-1个调整时刻与第0个调整时刻之间的时长,n为第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长;依据(m,n)分别减去f和e,推算出新的第t个调整时刻对应的(x′,y′)为(m–f,n-e)代入式(1)计算;特别地说,若在第t个调整时刻与第t-1个调整时刻之间存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间未存在访问行为,则根据第t-1个调整时刻与第0个调整时刻之间的时长以及第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长,确定第t个调整时刻对应的起始调整参数,例如,第8个调整时刻至第7个调整时刻之间有访问行为而第7个调整时刻至第6个调整时刻之间未存在访问行为,则在第8次计算(即在第8个调整时刻进行计算)时又需要按剩余存储时长增长计算,则再次重置(x′,y′),其中,将x′重置为第7个调整时刻与第0个调整时刻之间的时长,将y′重置为第7个调整时刻对应的待管理的存储数据调整后的剩余存储时长,此时无需跟f和e做减法运算。

为了避免待管理的存储数据调整后的剩余存储时长超过预设存储时长峰值,导致剩余存储时长过长,数据太长时间不清理引起数据冗余,在一种可选的方式中,步骤S220进一步包括:判断待管理的存储数据调整后的剩余存储时长是否超过第三预设时长;若是,则将第三预设时长作为待管理的存储数据调整后的剩余存储时长。其中,第三预设时长b可以依据预设存储时长峰值e的值来设定,且b的配置数值应当小于或等于e,如e设置为30分钟,那b的配置数值应为小于或等于30且大于0的数值,如b配置为20,则当计算出的剩余存储时长y的数值大于第三预设时长(即20分钟)时,按20设置存储时长;剩余存储时长y小于20时,按y值设置剩余存储时长。

例如,以e=30分钟、f=10分钟,第1个调整时刻与第0个调整时刻之间的时长a=1分钟以及b=20分钟为例列举本实施例的一个应用场景,将上述参数e和f代入式(1)得到式(2)如下:

调整过程如下:

1.第0个调整时刻即待管理的存储数据的初始存入时刻。第1个调整时刻即第一次计算,计算的是待管理的存储数据的初始剩余存储时长。

数据存入时按增长计算,第1个调整时刻对应的起始调整参数(x′,y′)为预设参数(0,0);此时x′=0,y′=0,x值为1×a(表示第1个调整时刻与第0个调整时刻之间的时长),a为1分钟,计算得出x=1;代入式(2)计算得到y=5.7,此时设置待管理的存储数据的初始剩余存储时长为5.7分钟。

2.第2个调整时刻即第二次计算

第0个调整时刻至第1个调整时刻之间存在访问行为且第1个调整时刻至第2个调整时刻之间存在访问行为,则将第1个调整时刻对应的起始调整参数作为第2个调整时刻对应的起始调整参数,(x′,y′)仍为(0,0),此时x′=0,y′=0,x=2×a(表示第2个调整时刻与第0个调整时刻之间的时长,以下计算类似,不再赘述),a为1分钟,代入计算得到x=2,代入式(2)计算得到y=10.8,则设置待管理的存储数据剩余存储时长为10.8分钟。

3.第3个调整时刻即第三次计算

第1个调整时刻至第2个调整时刻之间存在访问行为且第2个调整时刻至第3个调整时刻之间存在访问行为,则将第2个调整时刻对应的起始调整参数作为第3个调整时刻对应的起始调整参数;即x′=0,y′=0,x=3×a=3,代入式(2)计算得到y=15.3,则设置待管理的存储数据剩余存储时长为15.3分钟。

4.第4个调整时刻即第四次计算

第2个调整时刻至第3个调整时刻之间存在访问行为且第3个调整时刻至第4个调整时刻之间存在访问行为,则将第3个调整时刻对应的起始调整参数作为第4个调整时刻对应的起始调整参数;即x′=0,y′=0,x=4×a=4,代入式(2)计算得到y=19.2,则设置待管理的存储数据剩余存储时长为19.2分钟。

5.第5个调整时刻即第五次计算

第3个调整时刻至第4个调整时刻之间存在访问行为且第4个调整时刻至第5个调整时刻之间存在访问行为,则将第4个调整时刻对应的起始调整参数作为第5个调整时刻对应的起始调整参数;即x′=0,y′=0,x=5×a=5,代入式(2)计算得到y=22.5,大于配置的第三预设时长b(20分钟),则按第三预设时长b设置待管理的存储数据剩余存储时长为20分钟。

6.第6个调整时刻即第六次计算

第4个调整时刻至第5个调整时刻之间存在访问行为且第5个调整时刻至第6个调整时刻之间存在访问行为,则将第5个调整时刻对应的起始调整参数作为第6个调整时刻对应的起始调整参数;即x′=0,y′=0,x=6×a=6,因第5个调整时刻剩余存储时长已大于配置的第三预设时长b,因此该次无需计算,直接按第三预设时长b设置剩余存储时长为20分钟。

7.第7个调整时刻即第七次计算

第5个调整时刻至第6个调整时刻之间存在访问行为且第6个调整时刻至第7个调整时刻之间存在访问行为,则将第6个调整时刻对应的起始调整参数作为第7个调整时刻对应的起始调整参数;即x′=0,y′=0,x=7×a=7,因第6个调整时刻剩余存储时长已大于配置的第三预设时长b,因此该次无需计算,直接按第三预设时长b设置剩余存储时长为20分钟。

8.第8个调整时刻即第八次计算

第8个调整时刻与第7个调整时刻之间未存在访问行为且在第7个调整时刻与第6个调整时刻之间存在访问行为,则表示需要发生衰减,此时需要重置(x′,y′),通过第7个调整时刻与第0个调整时刻之间的时长m=7×a=7、n=第7个调整时刻对应的待管理的存储数据调整后的剩余存储时长=20、以及预设的f和e的值,计算得出x′=7–10=-3,y′=20–30=-10,x=8×a=8,代入式(2)计算得到y=19.7,设置剩余存储时长为19.7分钟。

9.第9个调整时刻即第九次计算

第9个调整时刻与第8个调整时刻之间未存在访问行为且在第8个调整时刻与第7个调整时刻之间未存在访问行为,则将第8个调整时刻对应的起始调整参数作为第9个调整时刻对应的起始调整参数;x′=-3,y′=-10,x=9×a=9,代入式(2)计算得到y=18.8,则设置剩余存储时长为18.8分钟。

10.第10个调整时刻即第十次计算

第10个调整时刻与第9个调整时刻之间未存在访问行为且在第9个调整时刻与第8个调整时刻之间未存在访问行为,则将第9个调整时刻对应的起始调整参数作为第10个调整时刻对应的起始调整参数;x′=-3,y′=-10,x=10×a=10,代入式(2)计算得到代入计算得到y=17.3,则设置剩余存储时长为17.3分钟。

11.第11个调整时刻即第十一次计算

第11个调整时刻与第10个调整时刻之间未存在访问行为且在第10个调整时刻与第9个调整时刻之间未存在访问行为,则将第10个调整时刻对应的起始调整参数作为第11个调整时刻对应的起始调整参数;x′=-3,y′=-10,x=11×a=11,代入式(2)计算得到代入y=15.2,设置剩余存储时长为15.2分钟。

12.第12个调整时刻即第十二次计算

第12个调整时刻与第11个调整时刻之间存在访问行为且在第11个调整时刻与第10个调整时刻之间未存在访问行为,转变为按增长计算,此时需要重新确定起始调整参数(x′,y′),则根据第11个调整时刻与第0个调整时刻之间的时长(即11分钟)以及第11个调整时刻对应的待管理的存储数据调整后的剩余存储时长(即15.2分钟)确定第12个调整时刻对应的起始调整参数x′=11,y′=15.2,x=12×a=12,代入式(2)计算得到y=20.9,大于配置的第三预设时长b(20分钟),则按第三预设时长b设置剩余存储时长为20分钟。

13.第13个调整时刻即第十三次计算

第13个调整时刻与第12个调整时刻之间未存在访问行为且第12个调整时刻与第11个调整时刻之间存在访问行为,则此时存在衰减,则根据第12个调整时刻与第0个调整时刻之间的时长m=12×a=12、n=第11个调整时刻对应的待管理的存储数据调整后的剩余存储时长20、预设存储时长峰值e以及第一预设时长f,计算得出x′=12–10=2,y′=20–30=-10,x=13×a=13,代入式(2)计算得到y=19.7,则设置剩余存储时长为19.7分钟。

14.第14个调整时刻即第十四次计算

第14个调整时刻与第13个调整时刻之间未存在访问行为且第13个调整时刻与第12个调整时刻之间未存在访问行为,则将第13个调整时刻对应的起始调整参数作为第14个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=14×a=14,代入式(2)计算得到y=18.8,则设置剩余存储时长为18.8分钟。

15.第15个调整时刻即第十五次计算

第15个调整时刻与第14个调整时刻之间未存在访问行为且第14个调整时刻与第13个调整时刻之间未存在访问行为,则将第14个调整时刻对应的起始调整参数作为第15个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=15×a=15,代入式(2)计算得到y=17.3,设置剩余存储时长为17.3分钟。

16.第16个调整时刻即第十六次计算

第15个调整时刻与第14个调整时刻之间未存在访问行为且第14个调整时刻与第13个调整时刻之间未存在访问行为,则将第15个调整时刻对应的起始调整参数作为第16个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=16×a=16,代入式(2)计算得到y=15.2,设置剩余存储时长为15.2分钟。

17.第17个调整时刻即第十七次计算

第17个调整时刻与第16个调整时刻之间未存在访问行为且第16个调整时刻与第15个调整时刻之间未存在访问行为,则将第16个调整时刻对应的起始调整参数作为第17个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=17×a=17,代入式(2)计算得到y=12.5,设置剩余存储时长为12.5分钟。

18.第18个调整时刻即第十八次计算

第18个调整时刻与第17个调整时刻之间未存在访问行为且第17个调整时刻与第16个调整时刻之间未存在访问行为,则将第17个调整时刻对应的起始调整参数作为第18个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=18×a=18,代入式(2)计算得到y=9.2,设置剩余存储时长为9.2分钟。

19.第19个调整时刻即第十九次计算

第19个调整时刻与第18个调整时刻之间未存在访问行为且第18个调整时刻与第17个调整时刻之间未存在访问行为,则将第18个调整时刻对应的起始调整参数作为第19个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=19×a=19,代入式(2)计算得到y=5.3,则设置存储时长为5.3分钟。

20.第20个调整时刻即第二十次计算

第20个调整时刻与第19个调整时刻之间未存在访问行为且第19个调整时刻与第18个调整时刻之间未存在访问行为,则将第19个调整时刻对应的起始调整参数作为第20个调整时刻对应的起始调整参数;仍为x′=2,y′=-10,x=20×a=20,代入式(2)计算得到y=0.8,设置剩余存储时长为0.8分钟。

21.第21个调整时刻即第二十一次计算

该调整时刻与第20个调整时刻间隔1分钟,而第20个调整时刻的剩余存储时长为0.8分钟,小于相邻调整时刻时长1分钟,此时数据已自然清除,无需再次计算。

以上21次计算为一次待管理存储数据存入后完整生命周期的计算结果。

步骤S230:若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。

为了及时清理Redis数据库的存储空间,在计算得出的剩余存储时长为0或小于0时,直接删除Redis数据库中的相关待管理的存储数据,以空出存储空间。

图4为采用本发明实施例提供的一种数据存储方法的数据时间曲线图,以Redis数据库为例,如图4所示,其中,线1表示现有技术方案的线性衰减规则,线2、线3和线4分别代表了本实施例对不同场景的待管理的存储数据的存储时间调整变化曲线,X轴代表自然时间,Y轴代表待管理的存储数据的剩余存储时长,X轴的每一小格代表一个调整区间,每个调整区间对应两个调整时刻内,本实施例对待管理的存储数据的剩余存储时长做动态调整,其中30为第三预设时长b,图中的存储时长峰值的单位具体可为分钟。

如图4所示,线1表示Redis数据库临时数据存储时间的默认线性衰减规则,随着自然时间的推移,达到存储时长后,将从Redis数据库中清除,再次访问则需要再次穿透关系型数据库获取数据。

线2、线3和线4在[0,1]时间区间内曲线是重合的,且线3和线4在[1,2]时间区间内曲线也是重合的。

线2表示待管理的存储数据的剩余存储时长在未调整为配置的第三预设时长(例如30分钟)前,由于没有用户访问该存储数据,剩余存储时长开始衰减,直至从Redis数据库中清除,释放存储空间。

线4表示待管理的存储数据在调整为第三预设时长后,维持第三预设时长一段时间后开始衰减,由于一直没有用户访问该存储数据,经过多次衰减,直至从Redis数据库中清除,释放存储空间。

线3表示待管理的存储数据的剩余存储时长在调整至第三预设时长后,经过了衰减,但由于后来又有用户访问该存储数据,则剩余存储时长又开始增长,再次达到第三预设时长后持续保持为第三预设时长的曲线,也就是说由于用户的持续访问,剩余存储时长一直保持在第三预设时长,并未从Redis数据库中删除。

图中线2和线4可以快速释放存储空间;线3则可以有效减少穿透关系型数据库的次数。

采用本实施例的方法,通过从数据库中筛选出待管理的存储数据,并设置多个调整时刻;在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1;若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。本发明不存储永久数据而是存储临时数据,排除存储空间被永久占用的可能;通过设置多个调整时刻,根据待管理的存储数据是否有用户访问对待管理的存储数据的剩余存储时长进行调整,从而不采用固定时间存储临时数据,有用户访问则动态延长待管理的存储数据的剩余存储时长,可以有效减少查询数据库的次数,如没有用户访问则动态缩短待管理的存储数据的剩余存储时长或删除待管理的存储数据,可以达到快速释放空间的目的,提高存储资源利用率,提升用户体验。

图5示出了本发明一种数据存储装置实施例的结构示意图。如图5所示,该装置包括:初始模块510、调整模块520和数据处理模块530。

初始模块510,用于从数据库中筛选出待管理的存储数据,并设置多个调整时刻。

在一种可选的方式中,数据库包括内存存储型数据库;初始模块510进一步用于:从内存存储型数据库中筛选出数据大小大于预设阈值的存储数据作为待管理的存储数据。

调整模块520,用于在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1。

在一种可选的方式中,调整模块520进一步用于:依据用户针对待管理的存储数据的访问行为,确定第t个调整时刻对应的起始调整参数;根据起始调整参数、预设存储时长峰值、第一预设时长以及第t个调整时刻与第0个调整时刻之间的时长,计算得到第t个调整时刻对应的待管理的存储数据调整后的剩余存储时长;其中,第0个调整时刻为待管理的存储数据的初始存入时刻。

在一种可选的方式中,调整模块520进一步用于:依据用户针对待管理的存储数据在第t个调整时刻与第t-1个调整时刻之间以及在第t-1个调整时刻与第t-2个调整时刻之间是否存在访问行为,确定第t个调整时刻对应的起始调整参数。

在一种可选的方式中,调整模块520进一步用于:若在第t个调整时刻与第t-1个调整时刻之间存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间存在访问行为,或者,在第t个调整时刻与第t-1个调整时刻之间未存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间未存在访问行为,则将第t-1个调整时刻对应的起始调整参数作为第t个调整时刻对应的起始调整参数;若在第t个调整时刻与第t-1个调整时刻之间未存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间存在访问行为,则根据第t-1个调整时刻与第0个调整时刻之间的时长、第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长、预设存储时长峰值以及第一预设时长,确定第t个调整时刻对应的起始调整参数;若在第t个调整时刻与第t-1个调整时刻之间存在访问行为且在第t-1个调整时刻与第t-2个调整时刻之间未存在访问行为,则根据第t-1个调整时刻与第0个调整时刻之间的时长以及第t-1个调整时刻对应的待管理的存储数据调整后的剩余存储时长,确定第t个调整时刻对应的起始调整参数;其中,第1个调整时刻对应的起始调整参数为预设参数。

在一种可选的方式中,多个调整时刻是从待管理的存储数据的初始存入时刻起每隔第二预设时长设置的。

在一种可选的方式中,调整模块520进一步用于:判断待管理的存储数据调整后的剩余存储时长是否超过第三预设时长;若是,则将第三预设时长作为待管理的存储数据调整后的剩余存储时长。

数据处理模块530,用于若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。

采用本实施例的装置,通过从数据库中筛选出待管理的存储数据,并设置多个调整时刻;在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1;若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。本发明不存储永久数据而是存储临时数据,排除存储空间被永久占用的可能;通过设置多个调整时刻,根据待管理的存储数据是否有用户访问对待管理的存储数据的剩余存储时长进行调整,从而不采用固定时间存储临时数据,有用户访问则动态延长待管理的存储数据的剩余存储时长,可以有效减少查询数据库的次数,如没有用户访问则动态缩短待管理的存储数据的剩余存储时长或删除待管理的存储数据,可以达到快速释放空间的目的,提高存储资源利用率,提升用户体验。

本发明实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的一种数据存储方法。

可执行指令具体可以用于使得处理器执行以下操作:

从数据库中筛选出待管理的存储数据,并设置多个调整时刻;

在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1;

若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。

图6示出了本发明计算设备实施例的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。

如图6所示,该计算设备可以包括:

处理器(processor)、通信接口(Communications Interface)、存储器(memory)、以及通信总线。

其中:处理器、通信接口、以及存储器通过通信总线完成相互间的通信。通信接口,用于与其它设备比如客户端或其它服务器等的网元通信。处理器,用于执行程序,具体可以执行上述一种数据存储方法实施例中的相关步骤。

具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。

处理器可能是中央处理器CPU,或者是特定集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。服务器包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器,用于存放程序。存储器可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

程序具体可以用于使得处理器执行以下操作:

从数据库中筛选出待管理的存储数据,并设置多个调整时刻;

在第t个调整时刻,依据用户针对待管理的存储数据的访问行为,对待管理的存储数据的剩余存储时长进行调整,其中t大于1;

若待管理的存储数据调整后的剩余存储时长小于或等于零,则从数据库中删除待管理的存储数据。

在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。

相关技术
  • 一种数据存储方法、数据查询方法、计算设备和存储介质
  • 一种数据存储方法及装置、一种计算设备及存储介质
技术分类

06120113678843