基于Redis的热点数据缓存方法技术

技术编号:29330545 阅读:16 留言:0更新日期:2021-07-20 17:48
本发明专利技术公开了基于Redis的热点数据缓存方法,包括以下步骤:步骤一、获取单位时间内的所有来自客户端的数据查询请求;对该段时间内每个数据查询请求出现的频次进行统计,并按频次由高到低对所有的数据查询请求进行排序;步骤二、取排序前N的N个数据查询请求,在数据库中查询该N个数据查询请求对应的数据记录;查询到的N条数据记录存储至Redis缓存中。本发明专利技术其能够快速的在Redis缓存中存储大量的热点数据。

【技术实现步骤摘要】
基于Redis的热点数据缓存方法
本专利技术属于数据通信
,尤其涉及一种基于Redis的热点数据缓存方法。
技术介绍
Redis(RemoteDictionaryServer,远程数据服务)是一款内存高速缓存数据库,该软件使用C语言编写,数据模型为key-value,由于Redis可支持丰富的数据类型,如String、List、Hash、Set、SortedSet等,因此被广泛应用。中国专利技术专利申请号201810803309.2,公开了一种基于Redis的热点数据缓存方法和装置,一方面对Redis缓存中的数据权重排序,可以使缓存中的数据都是高命中率数据,有效的提高了热点数据的查询速度,另一方面当新数据写入缓存中且缓存超标时,通过删除权重最小的数据,同时将此新数据权重值加权到所有权重的中间值,还可以减少缓存空间的占用。但上述专利公开的热点数据缓存方法在应用到实时热点搜索中时,发现其对Redis缓存中的数据更新太慢,很多实时的热点数据仅仅是在很短的一段时间内是热点数据,过了该段时间后其就不是热点数据了,若采用该专利公开的热点数据缓存方法,会使旧的热点数据在Redis缓存中待很长时间才能被删除,进一步地使Redis缓存中很难快速的塞满新的热点数据。
技术实现思路
本专利技术所要解决的技术问题在于针对上述现有技术中的不足,提供了一种基于Redis的热点数据缓存方法,其能够快速的在Redis缓存中存储大量的热点数据。为解决上述技术问题,本专利技术第一方面采用的技术方案是:一种基于Redis的热点数据缓存方法,包括以下步骤:步骤一、获取单位时间内的所有来自客户端的数据查询请求;对该段时间内每个数据查询请求出现的频次进行统计,并按频次由高到低对所有的数据查询请求进行排序;步骤二、取排序前N的N个数据查询请求,在数据库中查询该N个数据查询请求对应的数据记录;查询到的N条数据记录存储至Redis缓存中。上述基于Redis的热点数据缓存方法,其特征在于:还包括步骤三、经过时间T后清空Redis缓存,然后执行一次步骤一至步骤二。上述基于Redis的热点数据缓存方法,所述步骤一中,按频次由高到低对所有的数据查询请求进行排序时,若多个数据查询请求的出线频次相同,则以每个数据查询请求最后一次出现的时间节点对该多个数据查询请求进行排序,时间节点靠后的数据查询请求排在时间节点靠前的数据查询请求之前;若该多个数据查询请求中的几个数据查询请求最后一次出现的时间节点相同,则对该几个数据查询请求按字符串长度排序,字符串长度长的排在字符串长度短的之前。上述基于Redis的热点数据缓存方法,所述步骤二中,在数据库中查询该N个数据查询请求对应的数据记录时,当一个数据查询请求对应的数据记录在数据库中未查询到时,在Redis缓存中增加一条数据记录,将该增加的数据记录的值设为空值,每条数据记录包括标识和值,所述值代表该数据记录所表达的内容。为解决上述技术问题,本专利技术第二方面采用的技术方案是:一种基于Redis的热点数据缓存方法,包括以下步骤:步骤A、获取单位时间内的所有来自客户端的数据查询请求;对该段时间内每个数据查询请求出现的频次进行统计,并按频次由高到低对所有的数据查询请求进行排序;步骤B、按排序提取第一个数据查询请求;步骤C、根据提取的数据查询请求在数据库中查询对应的数据记录,若在数据库中查询到对应的数据记录,则将对应的数据记录存储至Redis缓存中;步骤D、判断Redis缓存中存储的数据记录是否为N个,若是,则结束;若否,则进入步骤E;步骤E、按排序提取下一个数据查询请求,然后进入步骤C。上述基于Redis的热点数据缓存方法,所述步骤A中单位时间内的所有来自客户端的数据查询请求的数量为M,若M<N时,则将步骤D替换为“判断Redis缓存中存储的数据记录是否为M个,若是,则结束;若否,则进入步骤E;”。上述基于Redis的热点数据缓存方法,还包括步骤F、经过时间T后清空Redis缓存,然后执行一次步骤A至步骤D。上述基于Redis的热点数据缓存方法,所述步骤A中,按频次由高到低对所有的数据查询请求进行排序时,若多个数据查询请求的出线频次相同,则以每个数据查询请求最后一次出现的时间节点对该多个数据查询请求进行排序,时间节点靠后的数据查询请求排在时间节点靠前的数据查询请求之前;若该多个数据查询请求中的几个数据查询请求最后一次出现的时间节点相同,则对该几个数据查询请求按字符串长度排序,字符串长度长的排在字符串长度短的之前。本专利技术与现有技术相比具有以下优点:本专利技术通过对单位时间内的所有数据查询请求按频次进行排序,快速筛选出单位时间内N个数据查询请求,并依此提取出N个数据记录存储至Redis缓存中,使得Redis缓存中能够快速的存储大量的热点数据。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明图1为本专利技术实施例1的方法步骤流程图。图2为本专利技术实施例2的方法步骤流程图。具体实施方式实施例1基于Redis的热点数据缓存方法,包括以下步骤:步骤一、获取单位时间内的所有来自客户端的数据查询请求;对该段时间内每个数据查询请求出现的频次进行统计,并按频次由高到低对所有的数据查询请求进行排序;例如有一个数据查询请求为“知识产权”,另一个数据查询请求为“专利”,“知识产权”在单位时间内出现了20次,“专利”在单位时间内出现了19次,则将“知识产权”排在“专利”前边;步骤二、取排序前N的N个数据查询请求,在数据库中查询该N个数据查询请求对应的数据记录;查询到的N条数据记录存储至Redis缓存中;步骤三、经过时间T后清空Redis缓存,然后执行一次步骤一至步骤二。实际应用中,假设一个热点只能维持三天的热度,则将时间T设为三天,将单位时间设为一天。例如数据查询请求“知识产权”和数据查询请求“专利”在第一天出现的频次非常多,按频次将第一天所有来自客户端的数据查询请求进行排序,最后发现数据查询请求“知识产权”和数据查询请求“专利”排在了第一位和第二位,则将数据查询请求“知识产权”和数据查询请求“专利”对应的数据记录存储至Redis缓存中,则在接下来的两天中,当客户从客户端查询“知识产权”和“专利”时将会非常方便快捷。本实施例中,所述步骤一中,按频次由高到低对所有的数据查询请求进行排序时,若多个数据查询请求的出线频次相同,则以每个数据查询请求最后一次出现的时间节点对该多个数据查询请求进行排序,时间节点靠后的数据查询请求排在时间节点靠前的数据查询请求之前;若该多个数据查询请求中的几个数据查询请求最后一次出现的时间节点相同,则对该几个数据查询请求按字符串长度排序,字符串长度长的排在字符串长度短的之前。例如,假设有一个数据查询请求为“知识产权”,另一个数据查询请求为“专利”,“知识产权”在单位时间内出现了20次,“专利”在单位时间内也出现了20次,而若“知识本文档来自技高网...

【技术保护点】
1.基于Redis的热点数据缓存方法,其特征在于:包括以下步骤:/n步骤一、获取单位时间内的所有来自客户端的数据查询请求;对该段时间内每个数据查询请求出现的频次进行统计,并按频次由高到低对所有的数据查询请求进行排序;/n步骤二、取排序前N的N个数据查询请求,在数据库中查询该N个数据查询请求对应的数据记录;查询到的N条数据记录存储至Redis缓存中。/n

【技术特征摘要】
1.基于Redis的热点数据缓存方法,其特征在于:包括以下步骤:
步骤一、获取单位时间内的所有来自客户端的数据查询请求;对该段时间内每个数据查询请求出现的频次进行统计,并按频次由高到低对所有的数据查询请求进行排序;
步骤二、取排序前N的N个数据查询请求,在数据库中查询该N个数据查询请求对应的数据记录;查询到的N条数据记录存储至Redis缓存中。


2.按照权利要求1所述的基于Redis的热点数据缓存方法,其特征在于:还包括步骤三、经过时间T后清空Redis缓存,然后执行一次步骤一至步骤二。


3.按照权利要求1或2所述的基于Redis的热点数据缓存方法,其特征在于:所述步骤一中,按频次由高到低对所有的数据查询请求进行排序时,若多个数据查询请求的出线频次相同,则以每个数据查询请求最后一次出现的时间节点对该多个数据查询请求进行排序,时间节点靠后的数据查询请求排在时间节点靠前的数据查询请求之前;若该多个数据查询请求中的几个数据查询请求最后一次出现的时间节点相同,则对该几个数据查询请求按字符串长度排序,字符串长度长的排在字符串长度短的之前。


4.按照权利要求1或2所述的基于Redis的热点数据缓存方法,其特征在于:所述步骤二中,在数据库中查询该N个数据查询请求对应的数据记录时,当一个数据查询请求对应的数据记录在数据库中未查询到时,在Redis缓存中增加一条数据记录,将该增加的数据记录的值设为空值,每条数据记录包括标识和值,所述值代表该数据记录所表达的内容。


5.基于Redis的热点数据缓存方法,其特征在于:包括...

【专利技术属性】
技术研发人员:李方进
申请(专利权)人:上海静客网络科技有限公司
类型:发明
国别省市:上海;31

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

1