CN110895539A - 一种应用系统的二级缓存方法 - Google Patents
一种应用系统的二级缓存方法 Download PDFInfo
- Publication number
- CN110895539A CN110895539A CN201911153829.4A CN201911153829A CN110895539A CN 110895539 A CN110895539 A CN 110895539A CN 201911153829 A CN201911153829 A CN 201911153829A CN 110895539 A CN110895539 A CN 110895539A
- Authority
- CN
- China
- Prior art keywords
- application system
- cache
- data object
- database
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种应用系统的二级缓存方法,用于提高数据存储效率,提高应用系统的性能。本发明提供一种应用系统的二级缓存方法,包括:应用系统接收用户下发的数据库接口查询指令;所述应用系统根据所述数据库接口查询指令读取数据库接口上注入的缓存功能代码;所述应用系统根据所述缓存功能代码读取所述应用系统的本地缓存;若所述应用系统从所述本地缓存中读取到数据对象,将读取到的数据对象返回给所述用户;若所述应用系统没有从所述本地缓存中读取到数据对象,所述应用系统向服务器缓存发送查询请求;若所述应用系统从所述服务器缓存接收到数据对象,将接收到的数据对象返回给所述用户,并将接收到的数据对象缓存到所述本地缓存中。
Description
技术领域
本发明涉及存储技术领域,具体涉及一种应用系统的二级缓存方法。
背景技术
随着应用程序对应用系统的高性能需求的增加,传统的单纯依靠数据库存取数据的模式已经无法满足大型互联网类应用的需求,许多软件厂商也纷纷选择缓存技术作为其架构上的补充,以减轻数据库的访问压力。
目前,根据缓存的存储位置可将缓存分为二大类:本地缓存、服务器缓存。目前应用系统可以根据系统自身的需要以及两类缓存各自特性来选择使用哪一种缓存,由于应用系统根据项目需要,只能选择一种缓存技术应用到项目中,从而无法充分发挥缓存的优势,造成资源浪费,数据存储效率降低,甚至降低系统性能。
发明内容
本发明的目的在于提供一种应用系统的二级缓存方法,用于提高数据存储效率,提高应用系统的性能。
为了达到上述目的,本发明采用这样的如下技术方案:
本发明提供一种应用系统的二级缓存方法,包括:
应用系统接收用户下发的数据库接口查询指令;
所述应用系统根据所述数据库接口查询指令读取数据库接口上注入的缓存功能代码;
所述应用系统根据所述缓存功能代码读取所述应用系统的本地缓存;
若所述应用系统从所述本地缓存中读取到数据对象,将读取到的数据对象返回给所述用户;
若所述应用系统没有从所述本地缓存中读取到数据对象,所述应用系统向服务器缓存发送查询请求;
若所述应用系统从所述服务器缓存接收到数据对象,将接收到的数据对象返回给所述用户,并将接收到的数据对象缓存到所述本地缓存中。
采用上述技术方案后,本发明提供的技术方案将有如下优点:
应用系统接收用户下发的数据库接口查询指令;应用系统根据数据库接口查询指令读取数据库接口上注入的缓存功能代码;应用系统根据缓存功能代码读取应用系统的本地缓存;若应用系统从本地缓存中读取到数据对象,将读取到的数据对象返回给用户;若应用系统没有从本地缓存中读取到数据对象,应用系统向服务器缓存发送查询请求;若应用系统从服务器缓存接收到数据对象,将接收到的数据对象返回给用户,并将接收到的数据对象缓存到本地缓存中。本发明实施例中基于注释实现的方式将二级缓存功能集成到缓存功能方法中,通过注解配置方式,灵活配置实现本地缓存和服务器缓存两者的有效结合,从而发挥各自缓存优势,达到通过缓存方式实现应用系统高并发的目的。提高数据存储效率,提高应用系统的性能。
附图说明
图1为本发明实施例提供一种应用系统的二级缓存方法的流程方框示意图;
图2为本发明实施例提供的基于注释实现的二级缓存方案的实现原理示意图。
具体实施方式
本发明实施例提供了一种应用系统的二级缓存方法,用于提高数据存储效率,提高应用系统的性能。
接下来将结合本发明附图,对本发明实施例中的技术方案进行清楚、完整地描述,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供的应用系统的二级缓存方法可应用于应用系统中,该应用系统具有二级缓存,即同时存在本地缓存和服务器缓存,且该应用系统还可以通过数据库接口与数据库进行通信,本申请实施例中应用系统尽量减少与数据库的通信,从而减少获取数据时读取数据库的I/O开销。
本发明的目的在于提供了一种注释实现的二级缓存方法,实现了本地缓存和服务器缓存二大类缓存技术的有效整合,使用本发明技术的二级缓存技术,充分发挥本地缓存和服务器缓存的各自优势,通过在方法类上注释的方式,利用切面编程技术注入缓存功能代码,实现两类缓存的有效结合,提供便利配置的同时也降低原有系统的改造成本。
如图1所示,本发明实施例提供的一种应用系统的二级缓存方法,包括如下步骤:
10、应用系统接收用户下发的数据库接口查询指令。
其中,用户可以通过应用系统获取数据对象,用户首先向应用系统发送数据库接口查询指令,数据库接口用于应用系统查询数据库。其中,数据库中存储有用户所需要的各种数据对象,但是应用系统与数据库之间的查询开销较大。
20、应用系统根据数据库接口查询指令读取数据库接口上注入的缓存功能代码。
其中,应用系统预先在数据库接口上注入缓存功能代码,该缓存功能代码用于在数据库接口读取之前,先查询缓存,该缓存功能代码可以指示二级缓存的查询方法,例如先查询应用系统的本地缓存,若没有查询到结果,则可以查询服务器缓存,本申请实施例中对于缓存功能代码所包括的代码内容不做限定。
在本申请的一些实施例中,缓存功能代码通过代码切面编程注入到数据库接口中。
其中,通过在方法类上注释的方式,可以利用切面编程技术注入缓存功能代码,从而在数据库接口方法执行之前,先跳转到查询本地缓存。
在本申请的一些实施例中,缓存功能代码,包括:缓存名称配置信息、超时时间配置信息和缓存类型配置信息。
其中,缓存名称配置信息可以指示应用系统配置的二级缓存:本地缓存和服务器缓存,超时时间配置信息是指每种缓存类型的查询最大时间,缓存类型配置信息是指二级缓存中每一种缓存的具体配置,对于缓存功能代码所包括的具体内容,此处不做限定。
30、应用系统根据缓存功能代码读取应用系统的本地缓存。
若应用系统从本地缓存中读取到数据对象,执行步骤40,若应用系统没有从本地缓存中读取到数据对象,执行步骤50。
在本申请实施例中,在应用系统中,为了提高系统的响应速度,可以把常用的数据对象提前读入到本地缓存中,这样可以减少许多文件系统的输入输出(Input/Output,I/O)操作。
40、若应用系统从本地缓存中读取到数据对象,将读取到的数据对象返回给用户。
其中,本地缓存中可以预先存储数据对象,若本地缓存中可以查询到的数据对象,则直接将读取到的数据对象返回给用户,提高用户查询数据的效率。
50、若应用系统没有从本地缓存中读取到数据对象,应用系统向服务器缓存发送查询请求。
步骤50执行之后,执行步骤60。
其中,本地缓存可能存在无法读取到数据对象的情况,此时应用系统可以按照缓存代码功能的要求从服务器缓存中读取数据对象,例如应用系统向服务器缓存发送查询请求,以实现从服务器缓存中读取数据对象,实现应用系统的二级缓存查询,保证用户能够从应用系统查询到所需要的数据对象。
60、若应用系统从服务器缓存接收到数据对象,将接收到的数据对象返回给用户,并将接收到的数据对象缓存到本地缓存中。
其中,服务器缓存中可以预先存储数据对象,若服务器缓存中可以查询到的数据对象,则应用系统可以从服务器缓存中读取到数据对象,然后将读取到的数据对象返回给用户,提高用户查询数据的效率。另外,应用系统还可以将接收到的数据对象缓存到本地缓存,以便于下次直接从本地缓存中查询到数据对象,提高本地缓存命中的概率。
本申请的一些实施例中,应用系统还可以执行如下的方法步骤:
若应用系统没有从服务器缓存中读取到数据对象,应用系统通过数据库接口向数据库发送查询请求;
应用系统从数据库接收到数据对象,将接收到的数据对象返回给用户,并将接收到的数据对象缓存到本地缓存和服务器缓存中。
其中,应用系统与数据库进行交互,从而可以从数据库接收到数据对象,将读取到的数据对象返回给用户,以保证用户可以成功查询数据。应用系统还可以将接收到的数据对象缓存到本地缓存和服务器缓存,以便于下次直接从本地缓存或者服务器中查询到数据对象,减少应用系统和数据库之间的交互次数,从而减少I/O开销。
进一步的,本申请的一些实施例中,应用系统还可以执行如下的方法步骤:
应用系统从数据库接收到数据对象之后,应用系统对接收到的数据对象进行数据对象序列化处理。
其中,应用系统可以通过实现序列化接口方式以实现数据序列化,数据序列化处理之后可以存储到本地缓存和服务器缓存中,以方便应用系统查询本地缓存和服务器缓存。
本申请的一些实施例中,前述的数据对象,包括:层叠样式表css数据、JavaScript数据和图片数据。
其中,数据对象可以包括层叠样式表(Cascading Style Sheets,css)数据,JavaScript数据和其他各种图片数据,对于数据对象的具体类型,此处不做限定。
在本申请的一些实施例中,应用系统还可以执行如下的方法步骤:
应用系统判断是否满足缓存周期性更新条件;
若满足周期性更新条件,应用系统通过数据库接口向数据库发送周期性更新请求;
应用系统从数据库接收到周期性更新数据,将接收到的周期性更新数据缓存到本地缓存和服务器缓存中。
其中,使用二级缓存需要考虑本地缓存和服务器缓存的数据一致性,为了防止因各种原因导致本地缓存没有及时更新,可加入定时或定次更新策略,当缓存被访问过特定次数或超时时,强制执行一次数据库接口方法,以达到同步更新本地缓存和服务器缓存的目的,保证缓存的一致性。
通过前述实施例对本发明的举例说明可知,应用系统接收用户下发的数据库接口查询指令;应用系统根据数据库接口查询指令读取数据库接口上注入的缓存功能代码;应用系统根据缓存功能代码读取应用系统的本地缓存;若应用系统从本地缓存中读取到数据对象,将读取到的数据对象返回给用户;若应用系统没有从本地缓存中读取到数据对象,应用系统向服务器缓存发送查询请求;若应用系统从服务器缓存接收到数据对象,将接收到的数据对象返回给用户,并将接收到的数据对象缓存到本地缓存中。本发明实施例中基于注释实现的方式将二级缓存功能集成到缓存功能方法中,通过注解配置方式,灵活配置实现本地缓存和服务器缓存两者的有效结合,从而发挥各自缓存优势,达到通过缓存方式实现应用系统高并发的目的。提高数据存储效率,提高应用系统的性能。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
如图2所示,本发明实施例在于提供通过注释实现的二级缓存方法,实现了本地缓存和服务器缓存二大类缓存技术的有效整合,使用本发明技术的二级缓存技术,充分发挥本地缓存和服务器缓存的各自优势,通过在方法类上注释的方式,利用切面编程技术注入缓存功能代码,实现两类缓存的有效结合,提供便利配置的同时也降低原有系统的改造成本。
缓存就是将程序或系统经常要调用的对象存于内存中,以便在使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。根据缓存的存储位置,可将缓存分为本地缓存和服务器缓存。
其中,本地缓存是指数据缓存在本地环境上,例如应用系统的本地内存中,服务器缓存就是将数据缓存在应用服务器上,应用系统可以和应用服务器进行通信,如果是分布式系统,可以使用本发明实施例中的统一部署的分布式缓存技术。在应用系统中,为了提高系统的响应速度,可以把常用的各种数据对象(包括css数据,JavaScript数据和其他各种图片数据)提前读入到本地缓存中,这样可以减少许多文件系统的I/O操作。但是,当实际的数据发生改变的时候,缓存不能得到及时的刷新,造成了一定的滞后现象。而且本地缓存无法满足缓存共享、分布式部署、大字段缓存的需求,因本地缓存的局限性。
本申请实施例中,应用系统还可以同时使用服务器缓存,即统一部署服务器缓存应用,将数据同步到服务器缓存上,服务器缓存在动态扩展性、高可用性、易用性、分布式代码执行等方面都存在极大优势,但是服务器缓存的配置繁杂,容错机制差,性能不如本地缓存等。本发明实施例基于本地缓存和服务器缓存提出一种二级缓存的方法,将本地缓存与服务器缓存有效结合,利用注释实现方式,非常容易的将缓存功能注入到应用系统中,充分发挥两类缓存各自优势,
举例说明如下,在应用系统的数据库接口方法上,通过注解方式注入缓存功能代码,注解是一种通过接口方法前加代码注解的实现方式,利用切面编程技术(即利用代码切面编程技术,在执行接口方法时,解析注解语法),使应用系统在调用数据库接口方法之前,先跳转到自定义的缓存方法上,从而能够判断有无缓存并返回数据对象,注释实现方法可以灵活的将缓存名称、超时时间、缓存类型等配置信息传入缓存方法中,从而达到与原业务代码解耦,方便管理和维护。
在本发明实施例提供的二级缓存方法中,通过注解语句中的缓存名称,先在本地缓存中查询是否存在数据,若本地缓存中存在该数据则返回数据,否则查询服务器缓存是否存在数据,若服务器缓存中存在该数据则返回数据,同时将数据缓存到本地缓存中,如果服务器缓存也不存在需要查询的数据,则跳转到数据库接口方法,查询数据库,根据接口返回值,将数据对象序列化(通过实现序列化接口方式以实现数据序列化)后再分别缓存到服务器缓存和本地缓存。从而减少应用服务器和服务器缓存之间的网络开销,达到二级缓存的目的,以提高系统性能,减轻数据库压力。
本地缓存的存放更新频率低,但可以存储请求量很高的数据,对于更新频率很高的数据可以由服务器缓存来承担。通过注解方式标明数据存储是否使用缓存、缓存的超时时间、是否开启本地缓存等。当更新缓存时,依次更新服务器缓存和本地缓存,从而减少获取数据的I/O开销。
采用本发明的技术方案后,应用系统只需通过注释方式,即可实现二级缓存方法,将原本需要访问数据库的对像存储在本地缓存和服务器缓存中,能够极大减轻网络开销,满足系统高并发需求。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种应用系统的二级缓存方法,其特征在于,包括:
应用系统接收用户下发的数据库接口查询指令;
所述应用系统根据所述数据库接口查询指令读取数据库接口上注入的缓存功能代码;
所述应用系统根据所述缓存功能代码读取所述应用系统的本地缓存;
若所述应用系统从所述本地缓存中读取到数据对象,将读取到的数据对象返回给所述用户;
若所述应用系统没有从所述本地缓存中读取到数据对象,所述应用系统向服务器缓存发送查询请求;
若所述应用系统从所述服务器缓存接收到数据对象,将接收到的数据对象返回给所述用户,并将接收到的数据对象缓存到所述本地缓存中。
2.根据权利要求1所述的一种应用系统的二级缓存方法,其特征在于,所述缓存功能代码通过代码切面编程注入到所述数据库接口中。
3.根据权利要求1所述的一种应用系统的二级缓存方法,其特征在于,所述缓存功能代码,包括:缓存名称配置信息、超时时间配置信息和缓存类型配置信息。
4.根据权利要求1所述的一种应用系统的二级缓存方法,其特征在于,所述方法还包括:
若所述应用系统没有从所述服务器缓存中读取到数据对象,所述应用系统通过所述数据库接口向数据库发送查询请求;
所述应用系统从所述数据库接收到数据对象,将接收到的数据对象返回给所述用户,并将接收到的数据对象缓存到所述本地缓存和所述服务器缓存中。
5.根据权利要求4所述的一种应用系统的二级缓存方法,其特征在于,所述方法还包括:
所述应用系统从所述数据库接收到数据对象之后,所述应用系统对接收到的数据对象进行数据对象序列化处理。
6.根据权利要求1所述的一种应用系统的二级缓存方法,其特征在于,所述方法还包括:
所述应用系统判断是否满足缓存周期性更新条件;
若满足所述周期性更新条件,所述应用系统通过所述数据库接口向所述数据库发送周期性更新请求;
所述应用系统从所述数据库接收到周期性更新数据,将接收到的周期性更新数据缓存到所述本地缓存和所述服务器缓存中。
7.根据权利要求1所述的一种应用系统的二级缓存方法,其特征在于,所述数据对象,包括:层叠样式表css数据、JavaScript数据和图片数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911153829.4A CN110895539A (zh) | 2019-11-22 | 2019-11-22 | 一种应用系统的二级缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911153829.4A CN110895539A (zh) | 2019-11-22 | 2019-11-22 | 一种应用系统的二级缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110895539A true CN110895539A (zh) | 2020-03-20 |
Family
ID=69787921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911153829.4A Pending CN110895539A (zh) | 2019-11-22 | 2019-11-22 | 一种应用系统的二级缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110895539A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559570A (zh) * | 2020-12-16 | 2021-03-26 | 中国平安财产保险股份有限公司 | 缓存数据获取方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026154A1 (en) * | 2004-07-30 | 2006-02-02 | Mehmet Altinel | System and method for adaptive database caching |
CN107231395A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置和系统 |
CN107463511A (zh) * | 2017-01-23 | 2017-12-12 | 北京思特奇信息技术股份有限公司 | 一种基于多级缓存的数据国际化实现方法及装置 |
CN108595680A (zh) * | 2018-05-02 | 2018-09-28 | 四川长虹电器股份有限公司 | Xbrl的缓存的实现方法 |
CN109388656A (zh) * | 2018-09-04 | 2019-02-26 | 中国建设银行股份有限公司 | 基于多级缓存的数据处理方法及系统、装置和存储介质 |
-
2019
- 2019-11-22 CN CN201911153829.4A patent/CN110895539A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026154A1 (en) * | 2004-07-30 | 2006-02-02 | Mehmet Altinel | System and method for adaptive database caching |
CN107231395A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置和系统 |
CN107463511A (zh) * | 2017-01-23 | 2017-12-12 | 北京思特奇信息技术股份有限公司 | 一种基于多级缓存的数据国际化实现方法及装置 |
CN108595680A (zh) * | 2018-05-02 | 2018-09-28 | 四川长虹电器股份有限公司 | Xbrl的缓存的实现方法 |
CN109388656A (zh) * | 2018-09-04 | 2019-02-26 | 中国建设银行股份有限公司 | 基于多级缓存的数据处理方法及系统、装置和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559570A (zh) * | 2020-12-16 | 2021-03-26 | 中国平安财产保险股份有限公司 | 缓存数据获取方法、装置、设备及存储介质 |
CN112559570B (zh) * | 2020-12-16 | 2024-05-10 | 中国平安财产保险股份有限公司 | 缓存数据获取方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11388251B2 (en) | Providing access to managed content | |
CN102163195B (zh) | 一种基于分布式、异构数据库统一视图的查询优化方法 | |
CN100550019C (zh) | 面向对象的数据库访问方法及系统 | |
US6567809B2 (en) | Disabling and reloading enterprise java beans using database trigger programs | |
CN110597859B (zh) | 一种分页查询数据的方法和装置 | |
CN102999522B (zh) | 一种数据存储方法和装置 | |
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
CN100437590C (zh) | 预取对象的方法 | |
US8793288B2 (en) | Online access to database snapshots | |
CN109933609B (zh) | 一种批量生成id的方法及终端 | |
CN101510209A (zh) | 实现实时检索的方法、系统和服务器 | |
EP2947582A1 (en) | Computing device and method for executing database operation command | |
CN100461136C (zh) | 多处理器系统中维持数据一致性的方法和系统 | |
CN107145549B (zh) | 一种数据库缓存控制方法以及系统 | |
CN106354732A (zh) | 一种支持并发协同的离线数据版本冲突解决方法 | |
CN110795431B (zh) | 环境监测数据处理方法、装置、设备及存储介质 | |
CN113254470B (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
CN110895539A (zh) | 一种应用系统的二级缓存方法 | |
US8140493B2 (en) | Changing metadata without invalidating cursors | |
CN112860802A (zh) | 数据库操作语句的处理方法、装置及电子设备 | |
CN107832121B (zh) | 一种应用于分布式串行长事务的并发控制方法 | |
CN107656992B (zh) | 面向多插入源的快照版本管理方法 | |
US11222003B1 (en) | Executing transactions for a hierarchy of data objects stored in a non-transactional data store | |
US10402391B2 (en) | Processing method, device and system for data of distributed storage system | |
EP3091447B1 (en) | Method for modifying root nodes and modifying apparatus |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200320 |