一种数据查询方法和装置制造方法及图纸

技术编号:16718000 阅读:56 留言:0更新日期:2017-12-05 16:25
本公开提供一种数据查询方法和装置,其中方法包括:接收数据查询请求,所述数据查询请求用于查询获取目标数据;在本地缓存中查询所述目标数据,当确定需要向数据实体层获取所述目标数据时,对本地缓存中所述目标数据对应的缓存块执行并发判断操作;若操作结果表明当前不存在对所述目标数据的并发查询,则向数据实体层查询所述目标数据;否则,返回所述缓存块中的当前数据作为所述目标数据。本公开有效防止了出现缓存击穿的现象。

A data query method and device

The present invention provides a method and device for querying data, wherein the method includes: receiving data query, the data query for query target data; query the target data in the local cache, when determining the need to obtain the data entity layer of the target data, the target data in the local cache the corresponding cache block concurrent execution judgment operation; if the operation results show that the concurrency on the target data query does not currently exist, to query the data entity layer target data; otherwise, the data is returned to the cache block as the target data. The present disclosure effectively prevents the occurrence of caching breakdown.

【技术实现步骤摘要】
一种数据查询方法和装置
本公开涉及互联网
,特别涉及一种数据查询方法和装置。
技术介绍
在接收到对于某数据的访问请求时,为了提高响应效率,通常可以先到本地缓存中查询是否存在该数据。如果不存在再到数据实体层查询数据,再把获取的数据放到缓存中,下次访问命中缓存直接返回;如果缓存超时,则重新到数据实体层查询数据并放置到缓存中。上述获取数据的方式,在一般情况下表现得很好,但在数据访问非常频繁的高频访问环境下,存在缓存击穿的风险。比如,若在缓存中的数据刚好需要刷新的时候,此时到达的大量的高频数据请求可能会落在数据实体层上,造成数据实体层压力瞬间飙升,即为缓存击穿,这对实体层的稳定性构成极大威胁。
技术实现思路
有鉴于此,本公开提供一种数据查询方法和装置,目的是防止出现缓存击穿的现象。具体地,本公开是通过如下技术方案实现的:第一方面,提供一种数据查询方法,所述方法包括:接收数据查询请求,所述数据查询请求用于查询获取目标数据;在本地缓存中查询所述目标数据,当确定需要向数据实体层获取所述目标数据时,对本地缓存中所述目标数据对应的缓存块执行并发判断操作;若操作结果表明当前不存在对所述目标数据的并发查本文档来自技高网...
一种数据查询方法和装置

【技术保护点】
一种数据查询方法,其特征在于,所述方法包括:接收数据查询请求,所述数据查询请求用于查询获取目标数据;在本地缓存中查询所述目标数据,当确定需要向数据实体层获取所述目标数据时,对本地缓存中所述目标数据对应的缓存块执行并发判断操作;若操作结果表明当前不存在对所述目标数据的并发查询,则向数据实体层查询所述目标数据;否则,返回所述缓存块中的当前数据作为所述目标数据。

【技术特征摘要】
1.一种数据查询方法,其特征在于,所述方法包括:接收数据查询请求,所述数据查询请求用于查询获取目标数据;在本地缓存中查询所述目标数据,当确定需要向数据实体层获取所述目标数据时,对本地缓存中所述目标数据对应的缓存块执行并发判断操作;若操作结果表明当前不存在对所述目标数据的并发查询,则向数据实体层查询所述目标数据;否则,返回所述缓存块中的当前数据作为所述目标数据。2.根据权利要求1所述的方法,其特征在于,所述确定需要向数据实体层获取所述目标数据,具体为:所述数据查询请求是对所述目标数据的首次查询。3.根据权利要求2所述的方法,其特征在于,所述本地缓存采用key-value的存储形式,所述数据查询请求携带key,所述目标数据是所述key对应的value;所述执行并发判断操作,包括:在所述key对应的缓存块中,通过putIfAbsent尝试设置所述key对应的value为传入值;若设置成功,则表明当前不存在对所述目标数据的并发查询;否则,返回缓存块中的key对应的当前value,作为所述目标数据。4.根据权利要求1所述的方法,其特征在于,所述确定需要向数据实体层获取所述目标数据,具体为:本地缓存中所述目标数据对应的缓存块过期,并且所述缓存块尚未更新。5.根据权利要求4所述的方法,其特征在于,所述缓存块的属性中包括:更新标记,所述更新标记包括两种状态值:真和假,所述真表示当前缓存块正在更新数据,所述假表示当前缓存块未更新数据;所述执行并发判断操作,包括:通过无锁同步方法,尝试设置所述缓存块中的所述更新标记的状态值为真;若设置成功,则表明当前不存在对所述目标数据的并发查询,并在向数据实体层查询所述目标数据成功后,恢复所述更新标记为假。6.根据权利要求5所述的方法,其特征在于,所述无锁同步方法,为比较并交换CAS。7.根据权利要求5所述的方法,其特征在于,所述方法还包括:若确定所述目标数据对应的缓存块过期,且根据所述更新标记的状态值确定所述缓存块正在更新,则返回所述缓存块中的当...

【专利技术属性】
技术研发人员:赵正邦钟亮力刘中胜吴刚
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1