CN108491450B - 数据缓存方法、装置、服务器和存储介质 - Google Patents
数据缓存方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN108491450B CN108491450B CN201810162119.7A CN201810162119A CN108491450B CN 108491450 B CN108491450 B CN 108491450B CN 201810162119 A CN201810162119 A CN 201810162119A CN 108491450 B CN108491450 B CN 108491450B
- Authority
- CN
- China
- Prior art keywords
- data
- data table
- identifier
- identification
- caching
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据缓存方法、装置、服务器和存储介质。方法包括:获取数据库中的数据表标识;查询与所述数据表标识对应的历史访问数据和数据量;根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;根据所述缓存优先级确定待缓存数据表的数据表标识;从所述数据库中获取与确定的数据表标识对应的数据表;将获取到的数据表缓存至redis存储***中。采用本方法无需考虑本地缓存空间的限制,在对数据库中的数据表访问时,先从redis存储***查询缓存的数据表,提高了数据表的访问效率,同时也减轻了数据库的访问压力。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种缓存方法、装置、服务器和存储介质。
背景技术
随着互联网技术的发展,各种各样的业务的相关数据都变成电子数据,这些电子数据通过互联网进行传输。随着越来越多的业务都通过利用电子数据进行业务的办理和记录等,导致电子数据的数据量迅猛增长。
然而,目前对数据的传统的存储方式,都是将数据存储在数据库中,在需要对数据进行访问时,再从数据库中获取相应的数据。随着数据量的迅猛增长,导致数据库中存储的数据量也越来越巨大,导致在访问数据库中的数据时,需要耗费较多的时间去查找相应的数据,反而降低了数据访问效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据访问效率的数据缓存方法、装置、服务器和存储介质。
一种数据缓存方法,所述方法包括:
获取数据库中的数据表标识;
查询与所述数据表标识对应的历史访问数据和数据量;
根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;
根据所述缓存优先级确定待缓存数据表的数据表标识;
从所述数据库中获取与确定的数据表标识对应的数据表;
将获取到的数据表缓存至redis存储***中。
在其中一个实施例中,所述获取数据库中的数据表标识之后,还包括:
识别所述数据表标识对应的数据表类型;
当识别到数据表标识对应的数据表类型是基础数据表类型时,从所述数据库中获取所述数据表标识对应的数据表;执行所述将获取到的数据表缓存至redis存储***中的步骤;
当识别到数据表标识对应的数据表类型不是基础数据表类型时,执行查询与所述数据表标识对应的历史访问数据和数据量的步骤。
在其中一个实施例中,所述根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级,包括:
根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;
以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算所述数据表标识对应的缓存优先级。
在其中一个实施例中,所述将获取到的数据表缓存至redis存储***中,包括:
根据获取到数据表的数据量确定是否超过预设数据量阈值;
若是,根据所述获取到的数据表对应历史访问数据,从所述获取到的数据中筛选访问频率高于预设访问频率的部分数据;
将筛选到的部分数据缓存至redis存储***。
在其中一个实施例中,所述将筛选到的部分数据缓存至redis存储***,包括:
获取筛选到的部分数据对应的数据标识和随机数;
将获取到的数据标识和随机数拼接生成缓存数据标识;
根据所述缓存数据标识确定redis服务器标识;
将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
在其中一个实施例中,所述将获取到的数据表缓存至redis存储***中之后,还包括:
接收终端发送的数据访问请求;
根据所述数据访问请求中的数据表标识,从所述redis存储***中查询缓存的数据表;
若查询到数据表,将查询到的数据表返回至终端;
若未查询到数据表,根据所述数据访问请求中的数据表标识,从所述数据库中查询数据表。
在其中一个实施例中,所述根据所述数据访问请求中的数据表标识,从所述数据库中查询数据表,包括:
统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量;
当统计到的访问请求数量达到预设请求数量时,从所述数据库查询与所述数据表标识对应的数据表;
将查询到的数据表返回至各数据访问请求分别对应的终端。
一种数据缓存装置,所述装置包括:
标识获取模块,用于获取数据库中的数据表标识;
表数据查询模块,用于查询与所述数据表标识对应的历史访问数据和数据量;
优先级确定模块,用于根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;
表标识确定模块,用于根据所述缓存优先级确定待缓存数据表的数据表标识;
数据表获取模块,用于从所述数据库中获取与确定的数据表标识对应的数据表;
数据表缓存模块,用于将获取到的数据表缓存至redis存储***中。
一种服务器,包括存储器和处理器,所述存储器存储有计算机指令,所述处理器执行所述计算机指令时实现以下步骤:
获取数据库中的数据表标识;
查询与所述数据表标识对应的历史访问数据和数据量;
根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;
根据所述缓存优先级确定待缓存数据表的数据表标识;
从所述数据库中获取与确定的数据表标识对应的数据表;
将获取到的数据表缓存至redis存储***中。
一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现以下步骤:
获取数据库中的数据表标识;
查询与所述数据表标识对应的历史访问数据和数据量;
根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;
根据所述缓存优先级确定待缓存数据表的数据表标识;
从所述数据库中获取与确定的数据表标识对应的数据表;
将获取到的数据表缓存至redis存储***中。
上述数据缓存方法、装置、服务器和存储介质,根据各数据表标识对应的历史访问数据和数据量,确定各数据表分别对应的缓存优先级,从数据库中获取缓存优先级较高的数据表,并将缓存优先级较高的数据表中线缓存至redis存储***中。无需考虑本地缓存空间的限制,在对数据库中的数据表访问时,先从redis存储***查询缓存的数据表,提高了数据表的访问效率,同时也减轻了数据库的访问压力。
附图说明
图1为一个实施例中数据缓存方法的应用场景图;
图2为一个实施例中数据缓存方法的流程示意图;
图3为一个实施例中缓存部分数据的步骤的流程示意图;
图4为一个实施例中根据缓存数据标识缓存数据的步骤的流程示意图;
图5为一个实施例中查询缓存数据的步骤的流程示意图;
图6为一个实施例中从数据库中获取数据的步骤的流程示意图;
图7为一个实施例中数据缓存装置的结构框图;
图8为另一个实施例中数据缓存装置的结构框图;
图9为一个实施例中服务器的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据缓存方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器104中设置有redis存储***,服务器也可以通过网络接口与设置在其他服务器上的redis存储***进行通信。
在一个实施例中,如图2所示,提供了一种数据缓存方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
S202,获取数据库中的数据表标识。
具体地,服务器对数据库中存储的数据表进行扫描,通过扫描的得到数据库中存储的数据表对应的数据表标识。服务器具体可以定期获取数据库中的数据表标识。
在一个实施例中,S202之后具体还包括以下内容:识别数据表标识对应的数据表类型;当识别到数据表标识对应的数据表类型是基础数据表类型时,从数据库中获取数据表标识对应的数据表,执行S212;当识别到数据表标识对应的数据表类型不是基础数据表类型时,执行S204。
具体地,服务器在获取到数据表标识后,逐个读取获取到的数据表标识,识别读取到的数据表标识对应的数据表类型,当识别到数据表标识对应的数据表类型是基础数据表类型时,从数据库中获取与读取到数据表标识对应的数据表,将获取到的数据表缓存至redis存储***中;当识别到数据表标识对应的数据表类型不是基础数据表类型是,查询与数据表标识对应的历史访问数据和数据量。
其中,基础数据表类型的数据表包括基表和预置表。基表和预置表为服务器处理数据时必需的数据表。
S204,查询与数据表标识对应的历史访问数据和数据量。
其中,服务器记录数据库中各数据表对应的每次访问数据,将记录的访问数据与数据表标识对应存储得到数据表标识对应的历史访问数据。服务器定期统计数据库中各数据表的数据量,将统计到的数据量与数据表标识对应存储。服务器可以将各数据表标识对应的历史访问数据和数据量存储在数据库中。
具体地,服务器在获取数据库中所存储的数据表对应的数据表标识后,从数据库中查询与获取到的数据表标识对应历史访问数据和数据量,提取查询到的历史访问数据和数据量。
S206,根据查询到的历史访问数据和数据量,确定数据表标识对应的缓存优先级。
其中,缓存优先级为用于表示数据缓存的优先程度的值。
具体地,服务器从查询到的历史访问数据中提取访问频率和响应平均时长,根据提取到的访问频率、相应平均时长和查询到的数据量进行加权和计算,得到各数据表标识对应的缓存优先级。
在一个实施例中,S206具体还包括:根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算数据表标识对应的缓存优先级。
具体地,服务器根据查询到的历史访问数据统计预设一段时间内的数据表访问次数,得到该数据表的访问频率;同时从查询到的历史访问数据中提取每次访问数据表时获取数据表的时长和统计访问数据表的总次数,将每次访问数据表的获取数据表的时长相加得到时长总和,将得到的时长总和处于统计到的总次数得到响应平均时长,从而得到每个数据表标识对应的访问频率和响应平均时长。
服务器对于每个数据表标识对应的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,根据访问频率、响应平均时长和数据量进行加权和运算,得到每个数据表标识对应的缓存优先级。
举例说明,服务器获取访问频率、响应平均时长和数据量分别对应的权重值a、b和c,以y表示缓存优先级,具体可以根据下述公式计算缓存优先级y:
y=ax1+bx2+cx3
其中,x1表示访问频率,x2表示响应平均时长,x3表示数据量,a是访问频率x1的权重值,b是响应平均时长x2的权重值,c是数据量x3的权重值。
在一个实施例中,服务器根据查询到的数据量求倒数得到每个数据表标识对应的数据量倒数,对每个数据表标识对应的访问频率、响应平均时长和数据量倒数进行加权和计算得到每个数据表标识对应的缓存优先级。
S208,根据缓存优先级确定待缓存数据表的数据表标识。
具体地,服务器按照缓存优先级由高到低对数据表标识进行排序,从排序后的数据表标识中提取预设数量的排序靠前的数据表标识,提取到的数据表标识为待缓存数据表的数据表标识。
在一个实施例中,服务器将每个数据表标识对应的缓存优先级与预设优先级比较,若缓存优先级高于预设优先级,则提取该缓存优先级对应的数据表标识,以提取到的数据表标识作为待缓存数据表的数据表标识。
S210,从数据库中获取与确定的数据表标识对应的数据表。
具体地,服务器在确定待缓存数据表对应的数据表标识后,在数据库中存储的数据表查询与确定的数据表标识对应的数据表,则查询到的数据表为待缓存数据表。
S212,将获取到的数据表缓存至redis存储***中。
具体地,服务器在查询到与确定的数据表标识对应的数据表时,将查询到的数据表发送至redis存储***中进行缓存。
在一个实施例中,服务器中存储着数值范围与redis服务器标识的对应关系,每个redis服务器标识所对应的数值范围均不相同。服务器将确定的数据表标识除以预设整数,得到确定的数据表标识对应的余数,确定得到的余数所属的数值范围。服务器根据数值范围与redis服务器标识的对应关系,查询与得到余数所属的数值范围对应的redis服务器标识,将获取到的数据表缓存至查询到的redis服务器标识对应的redis服务器。
在一个实施例中,服务器对于确定的数据表标识随机生成随机数,将生成的随机数与数据表标识拼接生成相应的缓存数据标识,将缓存数据标识除以预设整数,得到缓存数据标识对应的余数,确定得到的余数的数值范围,查询与确定的数值范围对应的redis服务器标识,将获取到的数据表缓存至查询到的redis服务器标识对应的redis服务器。
本实施例中,根据各数据表标识对应的历史访问数据和数据量,确定各数据表分别对应的缓存优先级,从数据库中获取缓存优先级较高的数据表,并将缓存优先级较高的数据表中线缓存至redis存储***中。无需考虑本地缓存空间的限制,在对数据库中的数据表访问时,先从redis存储***查询缓存的数据表,提高了数据表的访问效率,同时也减轻了数据库的访问压力。
在一个实施例中,如图3所示,S212具体包括缓存部分数据的步骤,该步骤具体包括以下内容:
S302,根据获取到数据表的数据量确定是否超过预设数据量阈值。
具体地,服务器统计获取到的数据表的数据量,将统计到的数据量与预设数据量阈值比较,经过比较确定统计到的数据量是否超过预设数据量阈值。
S304,当获取到的数据表的数据量超过预设数据量阈值时,根据获取到的数据表对应历史访问数据,从获取到的数据中筛选访问频率高于预设访问频率的部分数据。
具体地,服务器在确定统计到的数据量超过预设数据量阈值时,判定获取到的数据表的数据量较大,不能将整个数据表缓存至redis存储***。服务器根据该数据表对应的历史访问数据,筛选访问频率较高的部分数据。
在一个实施例中,服务器根据该数据表的历史访问数据,统计各数据段的访问频率,将各数据段的访问频率与预设访问频率比较,从数据表中筛选高于预设访问频率的访问频率对应的数据段,以筛选到的数据段作为筛选到的部分数据。
在一个实施例中,当获取到的数据表的数据量未超过预设数据量阈值时,服务器将整个数据表缓存至redis存储***中。
S306,将筛选到的部分数据缓存至redis存储***。
具体地,服务器从筛选到的部分数据中提取数据标识,以数据标识除以预设数值得到余数,确定余数所在数值范围。服务器根据数值范围与redis服务器标识的对应关系,查询余数所在数值范围对应的redis服务器标识,将筛选到的部分数据缓存至查询到的redis服务器标识对应的redis服务器。
本实施例中,对于数据量较大的数据表,无需将整个数据表的数据缓存到redis存储***中,根据历史访问数据从数据表中筛选访问频率较高的部分数据,将筛选到的部分数据缓存到redis存储***中,提高了缓存速度,节省了redis存储***中的缓存空间。
在一个实施例中,如图4所示,S305具体包括根据缓存数据标识缓存数据的步骤,该步骤具体包括以下内容:
S402,获取筛选到的部分数据对应的数据标识和随机数。
具体地,服务器在筛选到部分数据后,根据筛选到的部分数据计算摘要信息,以计算得到的摘要信息作为筛选到的部分数据的数据标识,调用随机数生成算法生成随机数。
S404,将获取到的数据标识和随机数拼接生成缓存数据标识。
具体地,服务器在生成的随机数添加到获取到的数据标识之前进行拼接,通过拼接生成完整的缓存数据标识。
在一个实施例中,服务器也可以将生成的随机数添加到获取到的数据标识之后进行拼接得到筛选到的部分数据对应的完整的缓存数据标识。服务器还可以将生成的随机数与获取到的数据标识进行融合,得到筛选到的部分数据对应的完整的缓存数据标识。
S406,根据缓存数据标识确定redis服务器标识。
具体地,服务器统计redis存储***中redis服务器的数量得到服务器数量,将缓存数据标识除以服务器数量得到缓存数据标识对应的余数,确定得到的余数所属数值范围,查询与确定的数值范围对应的redis服务器标识。
S408,将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
具体地,服务器将向redis服务器标识对应的redis服务器发送连接建立请求,接收redis服务器标识对应的redis服务器根据连接建立请求返回的连接建立成功信息。服务器通过建立的连接将筛选到的部分数据发送至redis服务器标识对应的redis服务器,以缓存至redis服务器标识对应的redis服务器中。
本实施例中,通过筛选到部分数据的数据标识和随机数进行拼接得到缓存数据标识,使得缓存数据标识的数值范围较大,避免了根据缓存数据标识确定redis服务器标识时,确定的redis服务器标识范围比较集中,避免将数据缓存至较为集中的redis服务器中,增加redis服务器的数据压力,保证了用于缓存数据的redis服务器比较均匀分散,从而避免个别redis服务器缓存数据较多,降低缓存效率的情况。
在一个实施例中,如图5所示,S212之后具体还包括查询缓存数据的步骤,该步骤具体包括以下内容:
S502,接收终端发送的数据访问请求。
具体地,终端可以通过网络向服务器发送数据访问请求,数据访问请求中包括终端标识和数据标识。其中,终端标识可以是终端的网络地址或物理地址。服务器通过网络接收终端发送的数据访问请求。
S504,根据数据访问请求中的数据表标识,从redis存储***中查询缓存的数据表。
具体地,服务器在接收到数据访问请求后,对数据访问请求进行解析,通过解析提取数据访问请求中的数据表标识,在redis存储***中缓存的数据表中查询与数据表标识对应的数据表。
S506,若查询到数据表,将查询到的数据表返回至终端。
具体地,服务器在redis存储***中查询到与数据访问请求中的数据表标识对应的数据表时,提取数据访问请求中的终端标识,根据终端标识将查询到的数据表返回至终端。
S508,若未查询到数据表,根据数据访问请求中的数据表标识,从数据库中查询数据表。
具体地,服务器在redis存储***中未查询到与数据访问请求中的数据表标识对应的数据表时,再从数据库中查询与数据访问请求中的数据表标识对应的数据表,将查询到的数据表,将查询到的数据表根据数据访问请求中的终端标识返回至终端。
本实施例中,根据数据访问请求优先从redis存储***中查询缓存的数据表,在redis存储***中查询不到时,再从数据库中查询存储的数据表,从而提高了数据的访问效率。
在一个实施例中,如图6所示,S508具体还包括从数据库中获取数据的步骤,该步骤具体包括以下内容:
S602,统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量。
具体地,在redis存储***查询不到与数据访问请求中的数据表标识对应的数据表时,先不根据数据访问请求中的数据表标识从数据库进行查找。服务器根据各终端在当前时间段内发送的数据访问请求中包含的数据表标识,统计包含相同数据表标识的数据访问请求的访问请求数量。
S604,当统计到的访问请求数量达到预设请求数量时,从数据库查询与数据表标识对应的数据表。
具体地,服务器将统计到的访问请求数量与预设请求数量比较,当统计到的访问请求数量等于或大于预设请求数量时,根据各数据访问请求中所包含的相同的数据表标识,从数据库中查询该数据表标识对应的数据表。
S606,将查询到的数据表返回至各数据访问请求分别对应的终端。
具体地,服务器提取各数据访问请求中的终端标识,将从数据库中查询到的数据表分别返回至各终端标识分别对应的终端。
本实施例中,在从redis存储***中未查询到与数据表标识对应的数据表时,接收到包含有相同数据表标识的数据访问请求,先不根据每个数据访问请求从数据库查询数据表,而是待数据访问请求达到预设请求数量时,根据相同的数据表标识从数据库查询数据表,减少了对数据库的访问次数,减少了数据库的数据访问压力,提高了数据访问效率。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种数据缓存装置700,包括:标识获取模块702、表数据查询模块704、优先级确定模块706、表标识确定模块708、数据表获取模块710和数据表缓存模块712,其中:
标识获取模块702,用于获取数据库中的数据表标识。
表数据查询模块704,用于查询与数据表标识对应的历史访问数据和数据量。
优先级确定模块706,用于根据查询到的历史访问数据和数据量,确定数据表标识对应的缓存优先级。
表标识确定模块708,用于根据缓存优先级确定待缓存数据表的数据表标识。
数据表获取模块710,用于从数据库中获取与确定的数据表标识对应的数据表。
数据表缓存模块712,用于将获取到的数据表缓存至redis存储***中。
本实施例中,根据各数据表标识对应的历史访问数据和数据量,确定各数据表分别对应的缓存优先级,从数据库中获取缓存优先级较高的数据表,并将缓存优先级较高的数据表中线缓存至redis存储***中。无需考虑本地缓存空间的限制,在对数据库中的数据表访问时,先从redis存储***查询缓存的数据表,提高了数据表的访问效率,同时也减轻了数据库的访问压力。
在一个实施例中,数据缓存装置700还包括:类型识别模块。
类型识别模块,用于识别数据表标识对应的数据表类型。
数据表缓存模块712还用于当识别到数据表标识对应的数据表类型是基础数据表类型时,从数据库中获取数据表标识对应的数据表;将获取到的数据表缓存至redis存储***中。
表数据查询模块704还用于当识别到数据表标识对应的数据表类型不是基础数据表类型时,查询与数据表标识对应的历史访问数据和数据量。
在一个实施例中,优先级确定模块706还用于根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算数据表标识对应的缓存优先级。
在一个实施例中,数据表缓存模块712还用于根据获取到数据表的数据量确定是否超过预设数据量阈值;若是,根据获取到的数据表对应历史访问数据,从获取到的数据中筛选访问频率高于预设访问频率的部分数据;将筛选到的部分数据缓存至redis存储***。
本实施例中,对于数据量较大的数据表,无需将整个数据表的数据缓存到redis存储***中,根据历史访问数据从数据表中筛选访问频率较高的部分数据,将筛选到的部分数据缓存到redis存储***中,提高了缓存速度,节省了redis存储***中的缓存空间。
在一个实施例中,数据表缓存模块712还用于获取筛选到的部分数据对应的数据标识和随机数;将获取到的数据标识和随机数拼接生成缓存数据标识;根据缓存数据标识确定redis服务器标识;将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
本实施例中,通过筛选到部分数据的数据标识和随机数进行拼接得到缓存数据标识,使得缓存数据标识的数值范围较大,避免了根据缓存数据标识确定redis服务器标识时,确定的redis服务器标识范围比较集中,避免将数据缓存至较为集中的redis服务器中,增加redis服务器的数据压力,保证了用于缓存数据的redis服务器比较均匀分散,从而避免个别redis服务器缓存数据较多,降低缓存效率的情况。
在一个实施例中,如图8所示,数据缓存装置700还包括:访问请求接收模块714和数据表查询模块716。
访问请求接收模块714,用于接收终端发送的数据访问请求;
数据表查询模块716,用于根据数据访问请求中的数据表标识,从redis存储***中查询缓存的数据表;若查询到数据表,将查询到的数据表返回至终端;若未查询到数据表,根据数据访问请求中的数据表标识,从数据库中查询数据表。
本实施例中,根据数据访问请求优先从redis存储***中查询缓存的数据表,在redis存储***中查询不到时,再从数据库中查询存储的数据表,从而提高了数据的访问效率。
在一个实施例中,数据表查询模块716还用于统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量;当统计到的访问请求数量达到预设请求数量时,从数据库查询与数据表标识对应的数据表;将查询到的数据表返回至各数据访问请求分别对应的终端。
本实施例中,在从redis存储***中未查询到与数据表标识对应的数据表时,接收到包含有相同数据表标识的数据访问请求,先不根据每个数据访问请求从数据库查询数据表,而是待数据访问请求达到预设请求数量时,根据相同的数据表标识从数据库查询数据表,减少了对数据库的访问次数,减少了数据库的数据访问压力,提高了数据访问效率。
关于数据缓存装置的具体限定可以参见上文中对于数据缓存方法的限定,在此不再赘述。上述数据缓存装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于服务器中的处理器中,也可以以软件形式存储于服务器中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种服务器,该服务器可以是服务器,其内部结构图可以如图9所示。该服务器包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该服务器的处理器用于提供计算和控制能力。该服务器的存储器包括非易失性计算机可读存储介质、内存储器。该非易失性计算机可读存储介质存储有操作***、计算机指令和数据库。该内存储器为非易失性计算机可读存储介质中的操作***和计算机指令的运行提供环境。该服务器的数据库用于存储数据表,还可以存储历史访问数据和数据量中的至少一种。该服务器的网络接口用于与外部的终端通过网络连接通信。该计算机指令被处理器执行时以实现一种数据缓存方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种服务器,包括存储器和处理器,该存储器存储有计算机指令,该处理器执行计算机指令时实现以下步骤:获取数据库中的数据表标识;查询与数据表标识对应的历史访问数据和数据量;根据查询到的历史访问数据和数据量,确定数据表标识对应的缓存优先级;根据缓存优先级确定待缓存数据表的数据表标识;从数据库中获取与确定的数据表标识对应的数据表;将获取到的数据表缓存至redis存储***中。
在一个实施例中,获取数据库中的数据表标识之后,处理器执行计算机指令时还实现以下步骤:识别数据表标识对应的数据表类型;当识别到数据表标识对应的数据表类型是基础数据表类型时,从数据库中获取数据表标识对应的数据表;执行将获取到的数据表缓存至redis存储***中的步骤;当识别到数据表标识对应的数据表类型不是基础数据表类型时,执行查询与数据表标识对应的历史访问数据和数据量的步骤。
在一个实施例中,根据查询到的历史访问数据和数据量,确定数据表标识对应的缓存优先级,包括:根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算数据表标识对应的缓存优先级。
在一个实施例中,将获取到的数据表缓存至redis存储***中,包括:根据获取到数据表的数据量确定是否超过预设数据量阈值;若是,根据获取到的数据表对应历史访问数据,从获取到的数据中筛选访问频率高于预设访问频率的部分数据;将筛选到的部分数据缓存至redis存储***。
在一个实施例中,将筛选到的部分数据缓存至redis存储***,包括:获取筛选到的部分数据对应的数据标识和随机数;将获取到的数据标识和随机数拼接生成缓存数据标识;根据缓存数据标识确定redis服务器标识;将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
在一个实施例中,将获取到的数据表缓存至redis存储***中之后,处理器执行计算机指令时还实现以下步骤:接收终端发送的数据访问请求;根据数据访问请求中的数据表标识,从redis存储***中查询缓存的数据表;若查询到数据表,将查询到的数据表返回至终端;若未查询到数据表,根据数据访问请求中的数据表标识,从数据库中查询数据表。
在一个实施例中,根据数据访问请求中的数据表标识,从数据库中查询数据表,包括:统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量;当统计到的访问请求数量达到预设请求数量时,从数据库查询与数据表标识对应的数据表;将查询到的数据表返回至各数据访问请求分别对应的终端。
本实施例中,根据各数据表标识对应的历史访问数据和数据量,确定各数据表分别对应的缓存优先级,从数据库中获取缓存优先级较高的数据表,并将缓存优先级较高的数据表中线缓存至redis存储***中。无需考虑本地缓存空间的限制,在对数据库中的数据表访问时,先从redis存储***查询缓存的数据表,提高了数据表的访问效率,同时也减轻了数据库的访问压力。
在一个实施例中,提供了一种非易失性计算机可读存储介质,其上存储有计算机指令,计算机指令被处理器执行时实现以下步骤:获取数据库中的数据表标识;查询与数据表标识对应的历史访问数据和数据量;根据查询到的历史访问数据和数据量,确定数据表标识对应的缓存优先级;根据缓存优先级确定待缓存数据表的数据表标识;从数据库中获取与确定的数据表标识对应的数据表;将获取到的数据表缓存至redis存储***中。
在一个实施例中,获取数据库中的数据表标识之后,计算机指令被处理器执行时还实现以下步骤:识别数据表标识对应的数据表类型;当识别到数据表标识对应的数据表类型是基础数据表类型时,从数据库中获取数据表标识对应的数据表;执行将获取到的数据表缓存至redis存储***中的步骤;当识别到数据表标识对应的数据表类型不是基础数据表类型时,执行查询与数据表标识对应的历史访问数据和数据量的步骤。
在一个实施例中,根据查询到的历史访问数据和数据量,确定数据表标识对应的缓存优先级,包括:根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算数据表标识对应的缓存优先级。
在一个实施例中,将获取到的数据表缓存至redis存储***中,包括:根据获取到数据表的数据量确定是否超过预设数据量阈值;若是,根据获取到的数据表对应历史访问数据,从获取到的数据中筛选访问频率高于预设访问频率的部分数据;将筛选到的部分数据缓存至redis存储***。
在一个实施例中,将筛选到的部分数据缓存至redis存储***,包括:获取筛选到的部分数据对应的数据标识和随机数;将获取到的数据标识和随机数拼接生成缓存数据标识;根据缓存数据标识确定redis服务器标识;将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
在一个实施例中,将获取到的数据表缓存至redis存储***中之后,计算机指令被处理器执行时还实现以下步骤:接收终端发送的数据访问请求;根据数据访问请求中的数据表标识,从redis存储***中查询缓存的数据表;若查询到数据表,将查询到的数据表返回至终端;若未查询到数据表,根据数据访问请求中的数据表标识,从数据库中查询数据表。
在一个实施例中,根据数据访问请求中的数据表标识,从数据库中查询数据表,包括:统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量;当统计到的访问请求数量达到预设请求数量时,从数据库查询与数据表标识对应的数据表;将查询到的数据表返回至各数据访问请求分别对应的终端。
本实施例中,根据各数据表标识对应的历史访问数据和数据量,确定各数据表分别对应的缓存优先级,从数据库中获取缓存优先级较高的数据表,并将缓存优先级较高的数据表中线缓存至redis存储***中。无需考虑本地缓存空间的限制,在对数据库中的数据表访问时,先从redis存储***查询缓存的数据表,提高了数据表的访问效率,同时也减轻了数据库的访问压力。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机指令来指令相关的硬件来完成,的计算机指令可存储于一非易失性计算机可读取存储介质中,该计算机指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种数据缓存方法,所述方法包括:
对数据库中存储的数据表进行扫描,获取数据库中的数据表标识;
识别所述数据表标识对应的数据表类型;
当识别到数据表标识对应的数据表类型是基础数据表类型时,从所述数据库中获取所述数据表标识对应的数据表,直接将获取到的数据表缓存至redis存储***;
当识别到数据表标识对应的数据表类型不是基础数据表类型时,查询与所述数据表标识对应的历史访问数据和数据量;
根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;
根据所述缓存优先级确定待缓存数据表的数据表标识;
从所述数据库中获取与确定的数据表标识对应的数据表;
基于得到的数据表标识除以预设整数得到余数,根据数值范围与redis服务器标识的对应关系,查询得到余数所属的数值范围对应的redis服务器标识,将获取到的数据表缓存至查询到的redis服务器标识对应的存储***中。
2.根据权利要求1所述的方法,其特征在于,所述根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级,包括:
根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;
以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算所述数据表标识对应的缓存优先级。
3.根据权利要求2所述的方法,其特征在于,所述将获取到的数据表缓存至redis存储***中,包括:
根据获取到数据表的数据量确定是否超过预设数据量阈值;
若是,根据所述获取到的数据表对应历史访问数据,从所述获取到的数据中筛选访问频率高于预设访问频率的部分数据;
将筛选到的部分数据缓存至redis存储***。
4.根据权利要求3所述的方法,其特征在于,所述将筛选到的部分数据缓存至redis存储***,包括:
获取筛选到的部分数据对应的数据标识和随机数;
将获取到的数据标识和随机数拼接生成缓存数据标识;
根据所述缓存数据标识确定redis服务器标识;
将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
5.根据权利要求1所述的方法,其特征在于,所述将获取到的数据表缓存至redis存储***中之后,还包括:
接收终端发送的数据访问请求;
根据所述数据访问请求中的数据表标识,从所述redis存储***中查询缓存的数据表;
若查询到数据表,将查询到的数据表返回至终端;
若未查询到数据表,根据所述数据访问请求中的数据表标识,从所述数据库中查询数据表。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数据访问请求中的数据表标识,从所述数据库中查询数据表,包括:
统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量;
当统计到的访问请求数量达到预设请求数量时,从所述数据库查询与所述数据表标识对应的数据表;
将查询到的数据表返回至各数据访问请求分别对应的终端。
7.一种数据缓存装置,其特征在于,所述装置包括:
标识获取模块,用于对数据库中存储的数据表进行扫描,获取数据库中的数据表标识;
类别识别模块,用于识别数据表标识对应的数据表类型;
数据表缓存模块,用于当识别到数据表标识对应的数据表类型是基础数据表类型时,从所述数据库中获取所述数据表标识对应的数据表,直接将获取到的数据表缓存至redis存储***;
表数据查询模块,用于当识别到数据表标识对应的数据表类型不是基础数据表类型时,查询与所述数据表标识对应的历史访问数据和数据量;
优先级确定模块,用于根据查询到的历史访问数据和数据量,确定所述数据表标识对应的缓存优先级;
表标识确定模块,用于根据所述缓存优先级确定待缓存数据表的数据表标识;
数据表获取模块,用于从所述数据库中获取与确定的数据表标识对应的数据表;
数据表缓存模块,用于基于得到的数据表标识除以预设整数得到余数,根据数值范围与redis服务器标识的对应关系,查询得到余数所属的数值范围对应的redis服务器标识,将获取到的数据表缓存至查询到的redis服务器标识对应的存储***中。
8.根据权利要求7所述的装置,其特征在于,
所述优先级确定模块,还用于根据查询到的历史访问数据确定数据表标识对应的访问频率和响应平均时长;
以确定的访问频率、响应平均时长和查询到的数据量作为缓存优先指标,计算所述数据表标识对应的缓存优先级。
9.根据权利要求8所述的装置,其特征在于,
所述数据表缓存模块,还用于根据获取到数据表的数据量确定是否超过预设数据量阈值;
若是,根据所述获取到的数据表对应历史访问数据,从所述获取到的数据中筛选访问频率高于预设访问频率的部分数据;
将筛选到的部分数据缓存至redis存储***。
10.根据权利要求9所述的装置,其特征在于,
所述数据表缓存模块,还用于获取筛选到的部分数据对应的数据标识和随机数;
将获取到的数据标识和随机数拼接生成缓存数据标识;
根据所述缓存数据标识确定redis服务器标识;
将筛选到的部分数据缓存至确定的redis服务器标识对应的redis服务器。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
访问请求接口模块,用于接收终端发送的数据访问请求;
数据表查询模块,用于根据所述数据访问请求中的数据表标识,从所述redis存储***中查询缓存的数据表;
若查询到数据表,将查询到的数据表返回至终端;
若未查询到数据表,根据所述数据访问请求中的数据表标识,从所述数据库中查询数据表。
12.根据权利要求11所述的装置,其特征在于,
所述数据表查询模块,还用于统计当前时间段内包含相同数据表标识的数据访问请求的访问请求数量;
当统计到的访问请求数量达到预设请求数量时,从所述数据库查询与所述数据表标识对应的数据表;
将查询到的数据表返回至各数据访问请求分别对应的终端。
13.一种服务器,包括存储器和处理器,所述存储器存储有计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1至6中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810162119.7A CN108491450B (zh) | 2018-02-26 | 2018-02-26 | 数据缓存方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810162119.7A CN108491450B (zh) | 2018-02-26 | 2018-02-26 | 数据缓存方法、装置、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108491450A CN108491450A (zh) | 2018-09-04 |
CN108491450B true CN108491450B (zh) | 2021-09-21 |
Family
ID=63340723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810162119.7A Active CN108491450B (zh) | 2018-02-26 | 2018-02-26 | 数据缓存方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491450B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240946A (zh) * | 2018-09-06 | 2019-01-18 | 平安科技(深圳)有限公司 | 数据的多级缓存方法及终端设备 |
CN109241084B (zh) * | 2018-09-17 | 2024-05-07 | 平安科技(深圳)有限公司 | 数据的查询方法、终端设备及介质 |
CN109871251B (zh) * | 2019-01-17 | 2023-12-29 | 平安科技(深圳)有限公司 | 一种响应数据的处理方法、装置、存储介质及终端设备 |
CN110688401B (zh) * | 2019-09-10 | 2023-11-03 | 中国平安财产保险股份有限公司 | 动态缓存处理方法、装置、存储介质及电子设备 |
CN110866045A (zh) * | 2019-10-25 | 2020-03-06 | 广西英腾教育科技股份有限公司 | 一种数据并发统计方法、***、介质及设备 |
CN112749190B (zh) * | 2019-10-31 | 2023-04-11 | ***通信集团重庆有限公司 | 数据查询方法、装置、计算设备及计算机存储介质 |
CN110971697B (zh) * | 2019-12-06 | 2022-08-16 | 深圳市网心科技有限公司 | Redis单实例保护处理方法、装置、计算机设备及存储介质 |
CN111506572A (zh) * | 2020-03-16 | 2020-08-07 | 北京物资学院 | 一种数据库智能预缓冲方法及装置 |
CN111858676A (zh) * | 2020-07-24 | 2020-10-30 | 政采云有限公司 | 一种数据处理的方法及装置 |
CN112035529B (zh) * | 2020-09-11 | 2024-07-02 | 北京字跳网络技术有限公司 | 缓存方法、装置、电子设备及计算机可读存储介质 |
CN112395319B (zh) * | 2020-11-25 | 2024-05-14 | 北京神州数码云科信息技术有限公司 | 缓存共用方法、装置、服务器及存储介质 |
CN113806651B (zh) * | 2021-09-18 | 2024-05-24 | 深圳市酷开网络科技股份有限公司 | 一种数据缓存方法、装置、服务器及存储介质 |
CN114327672B (zh) * | 2021-12-14 | 2024-04-05 | 中国平安财产保险股份有限公司 | 数据缓存时间设置方法、装置、计算机设备及存储介质 |
CN114822804B (zh) * | 2022-06-30 | 2022-09-20 | 深圳核心医疗科技有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499095A (zh) * | 2009-03-11 | 2009-08-05 | 南京联创科技股份有限公司 | 用于数据共享平台的构建缓冲的方法 |
CN101833423A (zh) * | 2009-03-09 | 2010-09-15 | 索尼公司 | 记录和再现设备以及记录和再现方法 |
CN107040422A (zh) * | 2017-04-25 | 2017-08-11 | 浙江工业大学 | 一种基于物化缓存的网络大数据可视化方法 |
CN107392407A (zh) * | 2016-05-17 | 2017-11-24 | 三星Sds株式会社 | 规则管理***及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150019528A1 (en) * | 2013-07-12 | 2015-01-15 | Sap Ag | Prioritization of data from in-memory databases |
US10067968B2 (en) * | 2014-11-07 | 2018-09-04 | International Business Machines Corporation | Pre-caching of relational database management system based on data retrieval patterns |
-
2018
- 2018-02-26 CN CN201810162119.7A patent/CN108491450B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833423A (zh) * | 2009-03-09 | 2010-09-15 | 索尼公司 | 记录和再现设备以及记录和再现方法 |
CN101499095A (zh) * | 2009-03-11 | 2009-08-05 | 南京联创科技股份有限公司 | 用于数据共享平台的构建缓冲的方法 |
CN107392407A (zh) * | 2016-05-17 | 2017-11-24 | 三星Sds株式会社 | 规则管理***及方法 |
CN107040422A (zh) * | 2017-04-25 | 2017-08-11 | 浙江工业大学 | 一种基于物化缓存的网络大数据可视化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108491450A (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108491450B (zh) | 数据缓存方法、装置、服务器和存储介质 | |
CN109064345B (zh) | 消息处理方法、***以及计算机可读存储介质 | |
CN108829781B (zh) | 客户信息查询方法、装置、计算机设备和存储介质 | |
CN108255958B (zh) | 数据查询方法、装置和存储介质 | |
CN109492019B (zh) | 业务请求响应方法、装置、计算机设备和存储介质 | |
CN109558404B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN108090064B (zh) | 一种数据查询方法、装置、数据存储服务器及*** | |
CN110555164B (zh) | 群体兴趣标签的生成方法、装置、计算机设备和存储介质 | |
CN109299147B (zh) | 数据库访问处理方法、装置、计算机设备和存储介质 | |
WO2019148712A1 (zh) | 钓鱼网站检测方法、装置、计算机设备和存储介质 | |
CN104572727A (zh) | 一种数据查询方法及装置 | |
CN110795171B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
US10846338B2 (en) | Data processing device, data processing method, and non-transitory computer readable medium | |
CN109614399B (zh) | 位图数据查询方法、装置、计算机设备和存储介质 | |
CN111400578B (zh) | 货物数据查询方法、装置、计算机设备和存储介质 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN111209061A (zh) | 用户信息的填写方法、装置、计算机设备和存储介质 | |
CN108763458B (zh) | 内容特征查询方法、装置、计算机设备及存储介质 | |
CN109460500B (zh) | 热点事件发现方法、装置、计算机设备和存储介质 | |
CN113486060A (zh) | 数据访问处理方法和装置、存储介质及电子设备 | |
CN111046240B (zh) | 网关流量统计方法、装置、计算机设备和存储介质 | |
CN105893150B (zh) | 接口调用频度控制、接口调用请求处理方法及装置 | |
CN110502549B (zh) | 用户数据处理方法、装置、计算机设备和存储介质 | |
CN109815351B (zh) | 信息查询方法及相关产品 | |
CN116795872A (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 |