CN107704573A - 一种与业务耦合的智能缓存方法 - Google Patents
一种与业务耦合的智能缓存方法 Download PDFInfo
- Publication number
- CN107704573A CN107704573A CN201710915530.2A CN201710915530A CN107704573A CN 107704573 A CN107704573 A CN 107704573A CN 201710915530 A CN201710915530 A CN 201710915530A CN 107704573 A CN107704573 A CN 107704573A
- Authority
- CN
- China
- Prior art keywords
- caching
- business
- strategy
- interface
- 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
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000007726 management method Methods 0.000 claims description 12
- 230000002688 persistence Effects 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 4
- 230000036316 preload Effects 0.000 claims description 4
- 230000006978 adaptation Effects 0.000 claims description 2
- 238000000429 assembly Methods 0.000 claims description 2
- 230000000712 assembly Effects 0.000 claims description 2
- 230000003068 static effect Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 3
- 206010013082 Discomfort Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种与业务耦合的智能缓存方法,涉及数据读取的业务逻辑领域,本发明它包含以下部分:定义的缓存接口和与业务相关的内存管理策略;根据实际业务需求的不同,对缓存的创建、施放、加载进行管理,适配数种内存数据库的实现;对业务产生的缓存进行类型标记,通过标记缓存的类型根据业务需求配置不同的策略,使不同类型的缓存能够根据业务的不同采用更优的管理方式。
Description
技术领域
本发明涉及软件分层架构的业务逻辑层,特别是涉及数据读取的业务逻辑,尤其涉及一种与业务耦合的智能缓存方法。
背景技术
在软件系统中,用户完成一项业务都会需要访问数据库存储的数据,一项业务往往需要多种数据,而其中一些数据如报表系统中的表格式,管理系统中的组织架构往往在很长一段时间是不会变动的,这些经常需要访问又不经常变动的数据需要用到缓存技术,将这些数据存放在系统内存之中从而提高运行效率。当前已经存在有许多成熟的工具来支持缓存的应用,如redis,Memcached。但是这些工具是通用的工具,与具体的业务无关,提供的仅是最基本的缓存需要。
如果在系统中能够提供一种可以根据实际业务需求来管理缓存的工具,当需要用到缓存时可以根据业务的特点制定对应的管理策略,从而使缓存技术更贴合实际的业务,获得更高的效率。
发明内容
为了解决以上技术问题,本发明提出了一种与业务耦合的智能缓存方法。目的是减少磁盘I/O和访问数据库的频率,提高系统的响应速度。
本发明的技术方案是:
一种与业务耦合的智能缓存方法,
它包含以下部分:
A、定义的缓存接口
B、与业务相关的内存管理策略
根据实际业务需求的不同,对缓存的创建、施放、加载进行管理,适配数种内存数据库的实现;对业务产生的缓存进行类型标记,通过标记缓存的类型根据业务需求配置不同的策略,使不同类型的缓存能够根据业务的不同采用更优的管理方式。
在A部分,为了实现数据的缓存操作,需要定义缓存的接口标准;接口标准包含如下几个组成部分:
(1)缓存写入接口;
(2)缓存读取接口;
(3)缓存同步接口;
(4)缓存释放接口;
(5)缓存持久化接口;
(6)缓存策略配置对象。
“缓存写入接口”,用于定义将程序运行过程中产生的数据通过适配的内存数据库写入服务器内存的方法;
“缓存写入接口”包含5个参数:缓存数据的类型、缓存的一级键值、缓存的二级键值、缓存的数据,策略标识;具体描述如下:
“缓存读取接口”包含三个参数,一级键值,二级键值和读取标识,实现从缓存中读取数据;具体描述如下:
“缓存同步接口”用于在可能导致缓存数据变化的业务逻辑后发生,使缓存内容与数据库保存一致,它包含三个参数,一级键值,二级键值,和一个委托同步方法,
“缓存释放接口”用于在特定的时机释放缓存;它包括三种释放方式:释放所有缓存,释放特定业务类的缓存,释放单个数据项,具体描述如下:
“缓存持久化接口”用于将缓存持久化,以便在程序停止运行或服务器重启后能够快速恢复到之前的缓存状态。它包括两种操作,持久化缓存和缓存恢复,
具体描述如下:
“缓存策略配置对象”用于对缓存策略进行配置,从缓存的释放,加载,更新,实现四个维度来进行配置,从而对不同业务的缓存进行差异化管理;它包括两个参数,一级键值和策略对象,具体描述如下:
在B部分,通过A部分中的配置信息,能够对A部分中形成的缓存进行智能的管理,对缓存的智能管理分为三个方面:
(5)缓存智能释放策略
(6)缓存智能加载策略
(7)缓存智能更新策略
(8)缓存的实现机制。
其中,
(1)缓存智能释放策略,程序生成缓存时会检测缓存占用情况,若是超过了阈值,则会尝试主动释放缓存,有四种智能的缓存释放策略,分别为:
a主动释放使用频次低的策略;标记为a策略的缓存类型会记录下访问缓存的次数和创建时间,当程序检测到占用内存超过指定阈值的时候会先根据创建时间和访问次数计算出访问频次,优先释放访问频次低的数据;
b主动释放存在时间长的策略;当程序检测到占用内存超过指定阈值的时候会先释放创建时间早的数据;
c主动释放当前业务无关数据的策略;释放时释放与当前写入内存类别不同的类别数据;
d释放占用最大的类别策略。特征是释放时释放占用内存最大的类别。
(2)缓存智能加载策略,可以选择开启预加载,当缓存生成时指定预加载键值范围,请求的数据立刻返回,预加载的数据将会在后台进程读入缓存;
(3)缓存智能更新策略,更新策略可以配置自动同步缓存的时间间隔,也可以配置触发更新缓存的事件,当某类缓存中指定事件被侦听到则执行某类缓存的更新;
(4)缓存的实现机制,若无其他组件支持,默认采用系统静态变量实现缓存的存储,也可以指定采用redis,Memcached来实现。
本发明的有益效果是
能够根据实际业务需求的不同,对缓存的创建、施放、加载进行灵活智能的管理,并能够适配多种内存数据库的实现。这组接口能够对业务产生的缓存进行类型标记,通过标记缓存的类型可根据业务需求配置不同的策略,使不同类型的缓存能够根据业务的不同采用更优的管理方式,从而更加有效的利用系统资源提高系统运行的效率,减少系统IO带来的性能问题。。
附图说明
图1是本发明的架构示意图;
图2是智能缓存接口实现架构。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明是一套适用于.NET平台的软件开发时使用的组件,实施时需要将相关动态链接库引入项目即可。以下将通过一个实际实施场景举例,使本发明的上述目标、特征和优点更加清晰、易懂。
考虑如下场景,在一个报表系统中,不同用户每次打开一套表时都要访问数据库获取权限,组织架构,表样,表内数据,个性化设置等信息。其中表内数据是实时变化的不适合加入缓存,其余的信息都可以加入缓存,但适用的缓存策略不同。
对于权限缓存,一般情况下,一个软件系统中的用户授权是比较稳定的,用户的权限信息可以以一个列表来存储。如果一个系统的用户不多,权限较为简单,可以启用权限预加载策略。调用智能缓存对象的C#语句为:SmartDataCache<List<string>>.GetData(key1,key2,GetUserMethod)
在上述语句中,SmartDataCache是智能缓存对象,GetData是调用的方法,方法中key1是一级键值确定访问的是权限缓存,key2是请求获取权限的用户id,GetUserMethod是一个委托,将查找全部用户权限并加入缓存的业务逻辑放在其中,方法由研发人员实现获取数据库数据的逻辑,并将获取的数据使用SmartDataCache<List<string>>.AddData(key1,key2,value)加入缓存。如果通过key1和key2直接从缓存中查到了结果则会立刻返回权限列表,GetUserMethod方法将在主线程外后台继续加载其他用户权限,如果没有查到结果,则主线程会等待GetUserMethod方法运行完毕再进行查询。
如果权限构成比较复杂,用户数量很大,全部缓存用户权限可能带来内存占用过大的问题。针对这种情况需要对用户类别缓存指定自动清理的阈值,比如可以指定内存占用超过系统内存总量的百分之90作为阈值,如果达到阈值,在内存占用到达阈值时主动释放用户权限缓存。从业务场景考虑,一个用户如果长时间没有登录系统,可能是已经完成了他的工作,也可能已经发生了岗位变更不再使用系统,所以这部分用户的权限应当优先清除,这时的释放策略应当为优先释放最近未使用的缓存。策略的指定方法为:
SmartDataCache<List<string>>.SetTactics(key1,TacticsObj),这里的策略是对一类缓存起作用故只需要一级键值,TacticsObj是策略对象,有三个属性,分别描述释放策略,释放阈值和预加载策略。
对于报表样式数据,因为报表一般会有进一步细分的类别,预加载时可以指定只预加载一个类别的策略。需要主动释放时则按照使用频率来优先释放使用频率低的表更加适合业务场景。
上述场景中表样式如果发生变动则要调用缓存更新的方法,若是系统有时是从外部获得表样,不会正常出发缓存更新的情况下,可以配置更新策略为每天或者每小时检查更新一次。
对于升级比较频繁的系统,持久化策略可配置为每天凌晨持久化一次缓存,如果系统升级重启后内存被释放掉,那么在重启系统后第一次在缓存查询数据的时候会异步的尝试恢复持久化的缓存,减少第一次访问数据时的延迟。
如果系统有内存数据库如redis,则可以在策略中指定采用redis作为实际的内存管理实现,以实现更高的性能。
Claims (10)
1.一种与业务耦合的智能缓存方法,其特征在于,
它包含以下部分:
A.定义的缓存接口
B.与业务相关的内存管理策略
根据实际业务需求的不同,对缓存的创建、施放、加载进行管理,适配数种内存数据库的实现;对业务产生的缓存进行类型标记,通过标记缓存的类型根据业务需求配置不同的策略,使不同类型的缓存能够根据业务的不同采用更优的管理方式。
2.根据权利要求1所述方法,其特征在于:在A部分,为了实现数据的缓存操作,需要定义缓存的接口标准;接口标准包含如下几个组成部分:
(1)缓存写入接口;
(2)缓存读取接口;
(3)缓存同步接口;
(4)缓存释放接口;
(5)缓存持久化接口;
(6)缓存策略配置对象。
3.根据权利要求2所述方法,其特征在于:
“缓存写入接口”,用于定义将程序运行过程中产生的数据通过适配的内存数据库写入服务器内存的方法;
“缓存写入接口”包含5个参数:缓存数据的类型、缓存的一级键值、缓存的二级键值、缓存的数据,策略标识;具体描述如下:
4.根据权利要求2所述方法,其特征在于:
“缓存读取接口”包含三个参数,一级键值,二级键值和读取标识,实现从缓存中读取数据;具体描述如下:
5.根据权利要求2所述方法,其特征在于:
“缓存同步接口”用于在可能导致缓存数据变化的业务逻辑后发生,使缓存内容与数据库保存一致,它包含三个参数,一级键值,二级键值,和一个委托同步方法,
6.根据权利要求2所述方法,其特征在于:
“缓存释放接口”用于在特定的时机释放缓存;它包括三种释放方式:释放所有缓存,释放特定业务类的缓存,释放单个数据项,具体描述如下:
7.根据权利要求2所述方法,其特征在于:
“缓存持久化接口”用于将缓存持久化,以便在程序停止运行或服务器重启后能够快速恢复到之前的缓存状态。它包括两种操作,持久化缓存和缓存恢复,具体描述如下:
8.根据权利要求2所述方法,其特征在于:
“缓存策略配置对象”用于对缓存策略进行配置,从缓存的释放,加载,更新,实现四个维度来进行配置,从而对不同业务的缓存进行差异化管理;它包括两个参数,一级键值和策略对象,具体描述如下:
9.根据权利要求1所述方法,其特征在于:在B部分,通过A部分中的配置信息,能够对A部分中形成的缓存进行智能的管理,对缓存的智能管理分为三个方面:
(1)缓存智能释放策略
(2)缓存智能加载策略
(3)缓存智能更新策略
(4)缓存的实现机制。
10.根据权利要求9所述的方法,其特征在于:
(1)缓存智能释放策略,程序生成缓存时会检测缓存占用情况,若是超过了阈值,则会尝试主动释放缓存,有四种智能的缓存释放策略,分别为:
a主动释放使用频次低的策略;标记为a策略的缓存类型会记录下访问缓存的次数和创建时间,当程序检测到占用内存超过指定阈值的时候会先根据创建时间和访问次数计算出访问频次,优先释放访问频次低的数据;
b主动释放存在时间长的策略;当程序检测到占用内存超过指定阈值的时候会先释放创建时间早的数据;
c主动释放当前业务无关数据的策略;释放时释放与当前写入内存类别不同的类别数据;
d释放占用最大的类别策略。特征是释放时释放占用内存最大的类别。
(2)缓存智能加载策略,可以选择开启预加载,当缓存生成时指定预加载键值范围,请求的数据立刻返回,预加载的数据将会在后台进程读入缓存;
(3)缓存智能更新策略,更新策略可以配置自动同步缓存的时间间隔,也可以配置触发更新缓存的事件,当某类缓存中指定事件被侦听到则执行某类缓存的更新;
(4)缓存的实现机制,若无其他组件支持,默认采用系统静态变量实现缓存的存储,也可以指定采用redis,Memcached来实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710915530.2A CN107704573A (zh) | 2017-09-30 | 2017-09-30 | 一种与业务耦合的智能缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710915530.2A CN107704573A (zh) | 2017-09-30 | 2017-09-30 | 一种与业务耦合的智能缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107704573A true CN107704573A (zh) | 2018-02-16 |
Family
ID=61183273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710915530.2A Pending CN107704573A (zh) | 2017-09-30 | 2017-09-30 | 一种与业务耦合的智能缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107704573A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284236A (zh) * | 2018-08-28 | 2019-01-29 | 北京三快在线科技有限公司 | 数据预热方法、装置、电子设备及存储介质 |
CN109614347A (zh) * | 2018-10-22 | 2019-04-12 | 中国平安人寿保险股份有限公司 | 多级缓存数据的处理方法、装置、存储介质及服务器 |
CN110347545A (zh) * | 2019-05-21 | 2019-10-18 | 深圳壹账通智能科技有限公司 | 一种业务平台缓存策略的测试方法及装置 |
CN110908726A (zh) * | 2018-09-14 | 2020-03-24 | 广州神马移动信息科技有限公司 | 数据管理方法、装置、设备及计算机可读存储介质 |
CN110968603A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种数据访问方法及装置 |
CN111897819A (zh) * | 2020-07-31 | 2020-11-06 | 平安普惠企业管理有限公司 | 数据存储方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216855A (zh) * | 2008-01-16 | 2008-07-09 | 中兴通讯股份有限公司 | 消息类业务累计数据缓存方法及系统 |
CN101656659A (zh) * | 2008-08-19 | 2010-02-24 | 中兴通讯股份有限公司 | 一种混合业务流的缓存处理方法、存储转发方法及装置 |
CN102024032A (zh) * | 2010-11-29 | 2011-04-20 | 广州明朝网络科技有限公司 | 一种基于Erlang的分布式数据缓存和持久化的方法和系统 |
US20120221606A1 (en) * | 2008-02-01 | 2012-08-30 | American Express Travel Related Services Company, Inc. | Rapid caching and data delivery system and method |
CN103488581A (zh) * | 2013-09-04 | 2014-01-01 | 用友软件股份有限公司 | 数据缓存系统和数据缓存方法 |
CN106846065A (zh) * | 2017-02-07 | 2017-06-13 | 咪咕互动娱乐有限公司 | 一种数据处理方法及装置 |
-
2017
- 2017-09-30 CN CN201710915530.2A patent/CN107704573A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216855A (zh) * | 2008-01-16 | 2008-07-09 | 中兴通讯股份有限公司 | 消息类业务累计数据缓存方法及系统 |
US20120221606A1 (en) * | 2008-02-01 | 2012-08-30 | American Express Travel Related Services Company, Inc. | Rapid caching and data delivery system and method |
CN101656659A (zh) * | 2008-08-19 | 2010-02-24 | 中兴通讯股份有限公司 | 一种混合业务流的缓存处理方法、存储转发方法及装置 |
CN102024032A (zh) * | 2010-11-29 | 2011-04-20 | 广州明朝网络科技有限公司 | 一种基于Erlang的分布式数据缓存和持久化的方法和系统 |
CN103488581A (zh) * | 2013-09-04 | 2014-01-01 | 用友软件股份有限公司 | 数据缓存系统和数据缓存方法 |
CN106846065A (zh) * | 2017-02-07 | 2017-06-13 | 咪咕互动娱乐有限公司 | 一种数据处理方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284236A (zh) * | 2018-08-28 | 2019-01-29 | 北京三快在线科技有限公司 | 数据预热方法、装置、电子设备及存储介质 |
CN110908726A (zh) * | 2018-09-14 | 2020-03-24 | 广州神马移动信息科技有限公司 | 数据管理方法、装置、设备及计算机可读存储介质 |
CN109614347A (zh) * | 2018-10-22 | 2019-04-12 | 中国平安人寿保险股份有限公司 | 多级缓存数据的处理方法、装置、存储介质及服务器 |
CN109614347B (zh) * | 2018-10-22 | 2023-07-21 | 中国平安人寿保险股份有限公司 | 多级缓存数据的处理方法、装置、存储介质及服务器 |
CN110347545A (zh) * | 2019-05-21 | 2019-10-18 | 深圳壹账通智能科技有限公司 | 一种业务平台缓存策略的测试方法及装置 |
CN110968603A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种数据访问方法及装置 |
CN110968603B (zh) * | 2019-11-29 | 2023-07-04 | 中国银行股份有限公司 | 一种数据访问方法及装置 |
CN111897819A (zh) * | 2020-07-31 | 2020-11-06 | 平安普惠企业管理有限公司 | 数据存储方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704573A (zh) | 一种与业务耦合的智能缓存方法 | |
CN101216821B (zh) | 数据采集系统的存储管理方法 | |
CN109857724B (zh) | 基于区块链实现支持多种数据库的方法及设备 | |
CN109344153B (zh) | 业务数据的处理方法及终端设备 | |
US6240422B1 (en) | Object to relational database mapping infrastructure in a customer care and billing system | |
US7487178B2 (en) | System and method for providing an object to support data structures in worm storage | |
CN107526550B (zh) | 一种基于日志结构合并树的两阶段合并方法 | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
CN105183915B (zh) | 减少索引维护开销的多版本管理方法 | |
US10776345B2 (en) | Efficiently updating a secondary index associated with a log-structured merge-tree database | |
CN107483631B (zh) | 一种控制缓存实现移动互联网络服务访问的方法 | |
CN102043859A (zh) | 数据更新方法及装置 | |
CN111596922A (zh) | 基于redis实现自定义缓存注解的方法 | |
CN110175206A (zh) | 用于多数据库分离的智能分析业务方法、系统及介质 | |
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
WO2006033089A1 (en) | Method and information database structure with user defined priorities for faster data access | |
CN102982186A (zh) | 基于oracle数据库系统的range分区表的维护方法和系统 | |
US20020087539A1 (en) | Variable-length database apparatus and method for accessing the same | |
CN102768672B (zh) | 一种磁盘空间管理方法和装置 | |
CN103778064B (zh) | 一种数据管理方法及装置 | |
CN106844497A (zh) | 一种数据库代码的检查装置和方法 | |
CN101853278A (zh) | 数据存储系统应用方法 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
CN108140047B (zh) | 数据处理装置和方法以及数据容器结构 | |
CN114265828A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180216 |