[发明专利]一种防缓存击穿方法及其注解组件在审
申请号: | 201910960329.5 | 申请日: | 2019-10-10 |
公开(公告)号: | CN110764920A | 公开(公告)日: | 2020-02-07 |
发明(设计)人: | 石永明 | 申请(专利权)人: | 北京美鲜科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/54;G06F16/2455 |
代理公司: | 11526 北京航信高科知识产权代理事务所(普通合伙) | 代理人: | 郭鹏鹏 |
地址: | 100029 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 缓存 读写操作 数据库 解析 结果写入缓存 查询请求 加锁成功 数据返回 击穿 加锁 移除 读取 读取单元 解析单元 判断步骤 判断单元 返回 注解 申请 | ||
本申请涉及一种防缓存击穿方法,包括:解析步骤:解析查询请求,得到key;判断步骤:判断缓存中是否存在Key的对应数据;读取步骤:若缓存中存在Key的对应数据,则将该对应数据返回;若否,则对Key进行加锁,在加锁成功后,执行一组数据库读写操作,将该组数据库读写操作的结果写入缓存,移除锁,返回缓存中的结果。此外,还涉及一种防缓存击穿注解组件,包括:解析单元,用以解析查询请求,得到key;判断单元,用以判断缓存中是否存在Key的对应数据;读取单元,若缓存中存在Key的对应数据,则将该对应数据返回;若否,则对Key进行加锁,在加锁成功后,执行一组数据库读写操作,将该组数据库读写操作的结果写入缓存,移除锁,返回缓存中的结果。
技术领域
本申请属于防缓存击穿设计技术领域,具体涉及一种防缓存击穿方法及其注解组件。
背景技术
缓存注解组件通过面向切面的方式,注解需要缓存服务的业务方法,实现缓存的读写,让开发人员可以透明的使用缓存服务,无需关注缓存相关开发,从而可专注于业务开发。
spring3.x提供了缓存相关注解,可以实现面向切面方式缓存服务,其存在以下缺点:
1)、不防缓存击穿,缓存失效时,大量并发请求,直接落库造成数据库宕机;
2)、面向所有需求,所需功能繁多,开发配置繁琐;
3)、要求相关三方软件的版本匹配。
鉴于现有技术的上述缺陷提出本申请。
发明内容
本申请的目的是提供一种防缓存击穿方法及其注解组件,以于克服或减轻现有技术至少一方面的缺陷。
本申请的技术方案是:
本申请一方面提供一种防缓存击穿方法,包括以下步骤:
解析步骤:解析查询请求,得到key;
判断步骤:判断缓存中是否存在Key的对应数据;
读取步骤:若缓存中存在Key的对应数据,则将该对应数据返回;
若缓存中不存在Key的对应数据,则对Key进行加锁,在加锁成功后,执行一组数据库读写操作,将该组数据库读写操作的结果写入缓存,移除锁,返回缓存中的结果。
根据本申请的至少一个实施例,上述防缓存击穿方法的解析步骤还包括:解析查询请求,得到Key的失效时间;
读取步骤中,根据Key及Key的失效时间将数据库读写操作的结果写入缓存。
根据本申请的至少一个实施例,上述防缓存击穿方法的读取步骤中,移除锁,具体为:
在finally中移除锁。
根据本申请的至少一个实施例,上述防缓存击穿方法的读取步骤中,若对Key进行加锁未成功,则抛异常。
根据本申请的至少一个实施例,上述防缓存击穿方法的读取步骤中,对Key进行加锁,具体为:
使用JDK中的Lock对Key进行加锁。
根据本申请的至少一个实施例,上述防缓存击穿方法的读取步骤中,对Key进行加锁,具体为:
使用ConcurrentHashMap对key进行加锁。
根据本申请的至少一个实施例,上述防缓存击穿方法的读取步骤中,对Key进行加锁,具体为:
使用JVM的锁机制对Key进行加锁。
本申请另一方面提供一种防缓存击穿注解组件,包括:
解析单元,用以解析查询请求,得到key;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京美鲜科技有限公司,未经北京美鲜科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910960329.5/2.html,转载请声明来源钻瓜专利网。