CN110096334A - 缓存处理方法、装置、设备及计算机可读存储介质 - Google Patents
缓存处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110096334A CN110096334A CN201910328015.3A CN201910328015A CN110096334A CN 110096334 A CN110096334 A CN 110096334A CN 201910328015 A CN201910328015 A CN 201910328015A CN 110096334 A CN110096334 A CN 110096334A
- Authority
- CN
- China
- Prior art keywords
- caching
- cached
- hash table
- virtual machine
- java virtual
- 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 120
- 238000012545 processing Methods 0.000 title claims abstract description 62
- 239000000872 buffer Substances 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 48
- 230000008569 process Effects 0.000 claims description 25
- 239000003550 marker Substances 0.000 claims description 19
- 238000001514 detection method Methods 0.000 claims description 18
- 238000001914 filtration Methods 0.000 claims description 14
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 241000208340 Araliaceae Species 0.000 claims 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 1
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 1
- 235000008434 ginseng Nutrition 0.000 claims 1
- 230000003139 buffering effect Effects 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 3
- 244000046052 Phaseolus vulgaris Species 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009975 flexible effect Effects 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种缓存处理方法,包括:当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。本发明还公开了一种缓存处理装置、设备和一种计算机可读存储介质。本发明提高了本地JVM级缓存方案的灵活性。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及缓存处理方法、装置、设备及计算机可读存储介质。
背景技术
近年来,随着互联网技术,尤其是互联网金融科技(Fintech)的飞速发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,金融数据也呈几何级增长,以大型商业银行为例,通常它们拥有成百上千个业务系统以及上亿用户的海量数据,这种情况下,对数据存储的数据量,并发性和响应速度都提出了更高要求。目前在金融领域,在使用JVM(Java Virtual Machine,Java虚拟机)访问金融数据库表时会用到缓存技术,即,将要操作的数据库表记录加载到本地JVM内存,以提高程序访问数据的速度,并降低数据库压力。
在现有的基于Java程序语言的数据持久化框架(如Mybatis、Hibernate)中,Java虚拟机级缓存无法做到细粒度控制,即一旦缓存启用之后,会对所有库表的查询结果做缓存,这会导致占用过多的内存空间,影响系统性能。因而,现有的本地JVM级缓存方案的灵活性还有待提高。
发明内容
本发明的主要目的在于提出一种缓存处理方法、装置、设备及计算机可读存储介质,旨在提高本地JVM级缓存方案的灵活性。
为实现上述目的,本发明提供一种缓存处理方法,所述缓存处理方法包括如下步骤:
当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;
根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;
若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;
若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。
优选地,所述当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数的步骤之前,还包括:
在应用程序启动时,读取预设的缓存配置表,所述缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息;
根据所述缓存配置信息生成一个缓存定义哈希表,将所述缓存定义哈希表保存至预设的Java虚拟机级缓存定义区中;
从数据库中获取与所述缓存配置表对应的库表记录,根据所述库表记录生成一个缓存数据哈希表,将所述缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。
优选地,所述缓存处理方法还包括:
通过预设的轮询线程,检测所述缓存配置表中的缓存配置信息是否发生变化;
若所述缓存配置信息发生变化,则根据变化后的缓存配置信息生成一个新的缓存定义哈希表,将所述Java虚拟机级缓存定义区中保存的所述缓存定义哈希表更新为所述新的缓存定义哈希表,同时,根据变化后的缓存配置信息对所述缓存数据区中保存的所述缓存数据哈希表进行更新。
优选地,所述检测所述缓存配置表中的缓存配置信息是否发生变化的步骤包括:
检测所述缓存配置信息中的Java虚拟机级缓存功能使能位是否发生变化,所述Java虚拟机级缓存功能使能位用于控制Java虚拟机级缓存功能开启或关闭。
优选地,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识插入、更新或删除数据时,执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据,并变更所述缓存配置表中的缓存刷新标识位,所述缓存刷新标识位用于控制刷新所述缓存数据区中保存的所述缓存数据哈希表;
所述检测所述缓存配置表中的缓存配置信息是否发生变化的步骤包括:
检测所述缓存配置信息中的缓存刷新标识位是否发生变化。
优选地,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识按组件查询时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表,得到与所述传入参数对应的域对象;
将所述域对象作为查询结果返回。
优选地,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识按条件查询且查询条件为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
将查询到的所述缓存定义哈希表还原为一个第一链表;
将所述第一链表作为查询结果返回。
优选地,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识按条件查询且查询条件不为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
根据所述查询条件对所述缓存定义哈希表进行数据过滤处理;
将数据过滤处理后的缓存定义哈希表还原为一个第二链表;
将所述第二链表作为查询结果返回。
此外,为实现上述目的,本发明还提供一种缓存处理装置,所述缓存处理装置包括:
获取模块,用于当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;
第一判断模块,用于根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;
第二判断模块,用于若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;
执行模块,用于若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。
优选地,所述缓存处理装置还包括:
读取模块,用于在应用程序启动时,读取预设的缓存配置表,所述缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息;
第一生成模块,用于根据所述缓存配置信息生成一个缓存定义哈希表,将所述缓存定义哈希表保存至预设的Java虚拟机级缓存定义区中;
第二生成模块,用于从数据库中获取与所述缓存配置表对应的库表记录,根据所述库表记录生成一个缓存数据哈希表,将所述缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。
优选地,所述缓存处理装置还包括:
检测模块,用于通过预设的轮询线程,检测所述缓存配置表中的缓存配置信息是否发生变化;
更新模块,用于若所述缓存配置信息发生变化,则根据变化后的缓存配置信息生成一个新的缓存定义哈希表,将所述Java虚拟机级缓存定义区中保存的所述缓存定义哈希表更新为所述新的缓存定义哈希表,同时,根据变化后的缓存配置信息对所述缓存数据区中保存的所述缓存数据哈希表进行更新。
优选地,所述检测模块,还用于检测所述缓存配置信息中的Java虚拟机级缓存功能使能位是否发生变化,所述Java虚拟机级缓存功能使能位用于控制Java虚拟机级缓存功能开启或关闭。
优选地,所述执行模块,还用于当所述方法名标识插入、更新或删除数据时,执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据,并变更所述缓存配置表中的缓存刷新标识位,所述缓存刷新标识位用于控制刷新所述缓存数据区中保存的所述缓存数据哈希表;
所述检测模块,还用于检测所述缓存配置信息中的缓存刷新标识位是否发生变化。
优选地,所述执行模块还用于:
当所述方法名标识按组件查询时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表,得到与所述传入参数对应的域对象;
将所述域对象作为查询结果返回。
优选地,所述执行模块还用于:
当所述方法名标识按条件查询且查询条件为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
将查询到的所述缓存定义哈希表还原为一个第一链表;
将所述第一链表作为查询结果返回。
优选地,所述执行模块还用于:
当所述方法名标识按条件查询且查询条件不为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
根据所述查询条件对所述缓存定义哈希表进行数据过滤处理;
将数据过滤处理后的缓存定义哈希表还原为一个第二链表;
将所述第二链表作为查询结果返回。
此外,为实现上述目的,本发明还提供一种缓存处理设备,所述缓存处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的缓存处理程序,所述缓存处理程序被所述处理器执行时实现如上所述的缓存处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有缓存处理程序,所述缓存处理程序被处理器执行时实现如上所述的缓存处理方法的步骤。
本发明当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。这种方式相比于现有技术中对所有库表的查询结果做缓存的方式,实现了Java虚拟机级缓存的细粒度控制,即,只有当预设的缓存定义哈希表中存在与当前调用的数据库访问接口的类名对应的库表缓存定义,且当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能时,才会执行对应的Java虚拟机级缓存数据读写操作,从而本发明提高了本地JVM级缓存方案的灵活性。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明缓存处理方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例缓存处理设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该缓存处理设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及缓存处理程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的缓存处理程序,并执行下述缓存处理方法中的操作。
基于上述硬件结构,提出本发明缓存处理方法实施例。
参照图2,图2为本发明缓存处理方法第一实施例的流程示意图,所述方法包括:
步骤S10,当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;
本实施例缓存处理方法应用于缓存处理设备,该缓存处理设备上运行有JVM(JavaVirtual Machine,Java虚拟机),JVM采用Mybatis或Hibernate等基于Java程序语言的数据持久化框架实现对数据库进行操作。比如在金融领域中,经常需要使用JVM访问金融数据库表,如账务信息表,开户信息表,金融交易信息表等,这一过程中会用到缓存技术以满足金融业务的并发性和访问速度要求。
在本实施例中,以采用Mybatis对数据库进行操作为例进行说明。Mybatis访问数据库的接口称为Mapper,当在Java虚拟机的任一线程中检测到调用数据库访问接口Mapper的指令时,获取当前调用的Mapper类名、Mapper方法名和传入参数,其中,传入参数用于表示要进行读写的域(Domain)对象,一个域对象对应于一条数据库表记录。
具体地,可以预先在所有Mapper上定义拦截器,比如:
@Around("execution(public*com.xxx..mapper..*.*(..))&&bean(*Mapper)"),表示对所有Mapper中的所有方法都执行拦截。系统运行时,每次对Mapper的调用,都会被拦截器拦截,拦截器获取到当次调用的Mapper类名、Mapper方法名和传入参数。
需要说明的是,在本实施例中,可以采用Mybatis代码生成器生成访问数据库的代码,以提高开发效率,并使得所有Mapper和其方法的命名规则统一,从而保证拦截器能够拦截访问数据库的代码;此外也可以不采用Mybatis代码生成器,只要Mybatis Mapper命名和其方法命名规则统一,拦截器也可对其进行拦截。
步骤S20,根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;
该步骤中,根据上述获取到的Mapper类名查询预设的缓存定义哈希表,判断该缓存定义哈希表中是否存在与Mapper类名对应的库表缓存定义。
具体地,可以预先在系统中设置一个JVM级的缓存定义区,该缓存定义区用于保存缓存定义哈希表,该缓存定义哈希表表现为一个HashMap,该HashMap实现了“Key-Value键值对”接口,结构如下:
Key | Value |
mapperName1 | sysCacheDef1 |
mapperName2 | sysCacheDef2 |
…… | …… |
其中,key为sysCacheDef域对象的mapperName(Mapper类名),value为sysCacheDef域对象本身。
如果缓存定义哈希表中存在当前调用的Mapper类名,则可以判定该缓存定义哈希表中存在与该Mapper类名对应的库表缓存定义,反之,则判定该缓存定义哈希表中不存在与该Mapper类名对应的库表缓存定义。
若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则执行步骤S30,判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;
该步骤中,若缓存定义哈希表中存在与当前调用的Mapper类名对应的库表缓存定义,则进一步判断当前是否启用与该库表缓存定义对应的Java虚拟机级缓存功能。
具体实施时,可以在sysCacheDef域对象中用一个缓存功能使能位enabled来控制是否启用与该sysCacheDef域对象对应的Java虚拟机级缓存功能,通过获取enabled值,即可判断当前是否启用与该库表缓存定义对应的Java虚拟机级缓存功能,比如,若检测到enabled=1,则判定当前已启用与库表缓存定义对应的Java虚拟机级缓存功能,若检测到enabled=0,则判定当前未启用与库表缓存定义对应的Java虚拟机级缓存功能。其中,Java虚拟机级缓存功能对Java虚拟机的任一线程都可用。
若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则执行步骤S40,根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。
该步骤中,若当前已启用与库表缓存定义对应的Java虚拟机级缓存功能,则根据Mapper方法名和传入参数执行对应的Java虚拟机级缓存数据读写操作,其中,Mapper方法名用于标识所执行的Java虚拟机级缓存数据读写操作的类型,其包括数据查询、数据插入、数据更新、数据删除等操作。比如,当Mapper方法名标识按组件查询时,可以根据传入参数查询缓存数据区中保存的缓存数据哈希表,得到与传入参数对应的域对象,并将该域对象作为查询结果返回;当Mapper方法名标识插入数据时,可以根据传入参数在数据库中插入对应的数据,然后再将插入的数据保存至预设的Java虚拟机级缓存数据区中,以便后续直接从缓存中读取;当Mapper方法名标识更新数据时,可以根据传入参数对数据库中的对应的数据进行更新,然后再将更新后的数据保存至预设的Java虚拟机级缓存数据区中,以便后续直接从缓存中读取。由此,实现了对缓存数据进行不同类型的读写操作。
需要说明的是,本实施例中所提及的缓存数据区的缓存均为Java虚拟机级的缓存,缓存数据区中的缓存数据对Java虚拟机的所有线程可用,该Java虚拟机级的缓存尤其适用于多线程对缓存数据的读写操作。
本实施例当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。这种方式相比于现有技术中对所有库表的查询结果做缓存的方式,实现了Java虚拟机级缓存的细粒度控制,即,只有当预设的缓存定义哈希表中存在与当前调用的数据库访问接口的类名对应的库表缓存定义,且当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能时,才会执行对应的Java虚拟机级缓存数据读写操作,从而本实施例提高了本地JVM级缓存方案的灵活性。
进一步地,基于本发明缓存处理方法第一实施例,提出本发明缓存处理方法第二实施例。
在本实施例中,上述步骤S10之前,还可以包括:在应用程序启动时,读取预设的缓存配置表,所述缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息;根据所述缓存配置信息生成一个缓存定义哈希表,将所述缓存定义哈希表保存至预设的Java虚拟机级缓存定义区中;从数据库中获取与所述缓存配置表对应的库表记录,根据所述库表记录生成一个缓存数据哈希表,将所述缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。
在本实施例中,在应用程序启动时需加载缓存定义到JVM内存中,并将与缓存定义对应的库表记录加载到JVM本地缓存数据区中,以便后续读取数据时直接从JVM本地缓存数据区中读取,而不用从数据库中读取。具体实施时,首先读取预设的缓存配置表,该缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息,该缓存配置信息可以包括Mybatis访问数据库的接口的类名、Mybatis访问数据库的Domain域名、Domain中的主键属性字段、缓存功能使能位、缓存刷新标识位以及描述信息。具体地,缓存配置表sys_cache_def的结构如下表所示:
比如,有一个合作银行场次信息的参数表,表名为coop_bank_round_def,其主键为bank_code+round_code,需要将其配置为Java虚拟机级缓存,则做配置如下:
mapper_name:CoopBankRoundDefMapper
domain_name:CoopBankRoundDef
primary_key:bankCode,roundCode
enabled:1
refresh_no:0
description:合作银行信息参数表
在读取到缓存配置表后,获取该缓存配置表中的所有记录,得到一个由SysCacheDef域对象组成的链表,将该链表重新组装为一个缓存定义哈希表HashMap;在该缓存定义哈希表中,key为SysCacheDef域对象的mapperName(Mapper类名),value为SysCacheDef域对象本身;之后,将该HashMap保存至预设的JVM级的缓存定义区中,以供后续查询。
之后,从数据库中获取与上述缓存配置表对应的库表记录,并根据该库表记录生成一个缓存数据哈希表,将该缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。具体实施时,可以将由SysCacheDef域对象组成的链表做如下迭代:
a、忽略enabled=0的;
b、获得mapperName和primaryKey
c、通过mapperName获得Spring(一种开源的、基于Java程序语言的应用程序框架)容器中对应的Bean(一个描述Java的软件组件模型)
d、使用Java反射机制,调用该Bean的selectByCondition(null)(按条件查询且查询条件为空)方法,得到该库表的所有记录,即一个由Domain对象组成的链表。
e、将该链表重新组装为一个HashMap。其中,key为通过primaryKey定义从Domain对象中获取的具体的主键值,value为Domain对象本身。
f、将该HashMap追加到预设的Java虚拟机级缓存数据区中,其中key为Domain的类名。
以上迭代完成后,即生成了Java虚拟机级缓存数据区的缓存数据结构。
上述方式通过将在应用程序启动时加载缓存定义到JVM内存中,为后续根据当前调用的数据库访问接口的类名查询预设的缓存定义哈希表提供了前提保证;此外,将与缓存定义对应的库表记录加载到JVM本地缓存数据区中,便于后续读取数据时直接从JVM本地缓存数据区中读取,而不用从数据库中读取,从而提高了数据读取效率。
进一步地,所述缓存处理方法还可以包括:通过预设的轮询线程,检测所述缓存配置表中的缓存配置信息是否发生变化;若所述缓存配置信息发生变化,则根据变化后的缓存配置信息生成一个新的缓存定义哈希表,将所述Java虚拟机级缓存定义区中保存的所述缓存定义哈希表更新为所述新的缓存定义哈希表,同时,根据变化后的缓存配置信息对所述缓存数据区中保存的所述缓存数据哈希表进行更新。
在本实施例中,可以通过一个预设的轮询线程,定期(比如每隔30秒)检测缓存配置表中的缓存配置信息是否发生变化,其中,缓存配置信息的变化包括但不限于Java虚拟机级缓存功能使能位的变化、缓存刷新标识位的变化等。产生变化的原因主要包括以下两种:
(1)用户手动修改缓存配置信息。比如,当用户想要新增缓存定义时,只需在缓存配置表中插入一条记录;当用户想要禁用某一条缓存时,只需将缓存配置表中对应的记录删除,或将enabled位改为0;当用户手动修改缓存数据后,再将缓存配置表中的缓存刷新标识位手动加1。
(2)在预设条件满足时系统自动修改缓存配置信息。比如,在执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据后,将对应的缓存配置表中的缓存刷新标识位自动加1。
当检测到缓存配置信息发生变化时,即根据变化后的缓存配置信息生成一个新的缓存定义哈希表,并将Java虚拟机级缓存定义区中保存的缓存定义哈希表更新为新的缓存定义哈希表,同时,根据变化后的缓存配置信息对缓存数据区中保存的缓存数据哈希表进行更新。
对应地,在一实施方式中,所述检测所述缓存配置表中的缓存配置信息是否发生变化的步骤可以包括:检测所述缓存配置信息中的Java虚拟机级缓存功能使能位是否发生变化,所述Java虚拟机级缓存功能使能位用于控制Java虚拟机级缓存功能开启或关闭。
比如,可以检测Java虚拟机级缓存功能使能位enabled是否由0变为1,或由1变为0。
在另一实施方式中,上述步骤S40可以包括:当所述方法名标识插入、更新或删除数据时,执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据,并变更所述缓存配置表中的缓存刷新标识位,所述缓存刷新标识位用于控制刷新所述缓存数据区中保存的所述缓存数据哈希表;此时,所述检测所述缓存配置表中的缓存配置信息是否发生变化的步骤可以包括:检测所述缓存配置信息中的缓存刷新标识位是否发生变化。
比如,在执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据后,将对应的缓存配置表中的缓存刷新标识位自动加1,此时轮询线程检测到该缓存刷新标识位发生变化,即控制刷新缓存数据区中保存的缓存数据哈希表。
上述方式通过在缓存配置表中的缓存配置信息发生变化时,自动更新缓存定义哈希表和缓存数据哈希表,该方案不需要修改代码或配置文件,不需要重新部署,也不需要重启系统,只需要对缓存配置表做增、删、改,即可达到启用缓存、禁用缓存、刷新缓存的目的,灵活程度非常高。
进一步地,基于本发明缓存处理方法第一实施例,提出本发明缓存处理方法第三实施例。
在本实施例中,上述步骤S40可以包括:当所述方法名标识按组件查询时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表,得到与所述传入参数对应的域对象;将所述域对象作为查询结果返回。
当Mapper方法名标识按组件查询时,先根据传入参数获得访问数据库的域名domain_name,再根据domain_name从缓存数据哈希表中查询对应的域对象,并将查询结果返回。该缓存数据哈希表保存在预设的Java虚拟机级缓存数据区中,其结构如下表所示:
其中,一级Key为域名,一级value为包括二级Key和二级Value的键值对,二级Key为主键名,二级Value为域对象,一个域对象对应数据库表中的一条记录。将缓存数据哈希表设计为上述嵌套结构,有利于提高Java虚拟机级缓存数据读写的效率。
进一步地,上述步骤S40还可以包括:当所述方法名标识按条件查询且查询条件为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;将查询到的所述缓存定义哈希表还原为一个第一链表;将所述第一链表作为查询结果返回。
当Mapper方法名标识按条件查询且查询条件为空时,先根据传入参数获得访问数据库的域名domain_name,再根据domain_name从缓存数据哈希表中查询到二级HashMap,并将该二级HashMap还原为一个第一链表,将该第一链表作为查询结果返回。其中,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
进一步地,上述步骤S40还可以包括:当所述方法名标识按条件查询且查询条件不为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;根据所述查询条件对所述缓存定义哈希表进行数据过滤处理;将数据过滤处理后的缓存定义哈希表还原为一个第二链表;将所述第二链表作为查询结果返回。
当Mapper方法名标识按条件查询且查询条件不为空时,先根据传入参数获得访问数据库的域名domain_name,再根据domain_name从缓存数据哈希表中查询到二级HashMap,之后,根据查询条件对该二级HashMap进行数据过滤处理,即过滤掉不需要的数据,然后将数据过滤处理后的缓存定义哈希表还原为一个第二链表,将该第二链表作为查询结果返回。
通过上述方式,实现了对各种数据查询操作进行从缓存中查询,提高了数据查询效率;此外,上述Java虚拟机级读写缓存的机制与业务逻辑完全解耦,业务层开发人员无需感知缓存的存在,只需要调用数据库访问接口读写数据库即可,相比于现有的在业务逻辑处理的工程中执行缓存读写的机制,降低了编码复杂度,提高了编码效率,且具有较高的灵活性。
本发明还提供一种缓存处理装置。所述缓存处理装置包括:
获取模块,用于当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;
第一判断模块,用于根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;
第二判断模块,用于若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;
执行模块,用于若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。
进一步地,所述缓存处理装置还包括:
读取模块,用于在应用程序启动时,读取预设的缓存配置表,所述缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息;
第一生成模块,用于根据所述缓存配置信息生成一个缓存定义哈希表,将所述缓存定义哈希表保存至预设的Java虚拟机级缓存定义区中;
第二生成模块,用于从数据库中获取与所述缓存配置表对应的库表记录,根据所述库表记录生成一个缓存数据哈希表,将所述缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。
进一步地,所述缓存处理装置还包括:
检测模块,用于通过预设的轮询线程,检测所述缓存配置表中的缓存配置信息是否发生变化;
更新模块,用于若所述缓存配置信息发生变化,则根据变化后的缓存配置信息生成一个新的缓存定义哈希表,将所述Java虚拟机级缓存定义区中保存的所述缓存定义哈希表更新为所述新的缓存定义哈希表,同时,根据变化后的缓存配置信息对所述缓存数据区中保存的所述缓存数据哈希表进行更新。
进一步地,所述检测模块,还用于检测所述缓存配置信息中的Java虚拟机级缓存功能使能位是否发生变化,所述Java虚拟机级缓存功能使能位用于控制Java虚拟机级缓存功能开启或关闭。
进一步地,所述执行模块,还用于当所述方法名标识插入、更新或删除数据时,执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据,并变更所述缓存配置表中的缓存刷新标识位,所述缓存刷新标识位用于控制刷新所述缓存数据区中保存的所述缓存数据哈希表;
所述检测模块,还用于检测所述缓存配置信息中的缓存刷新标识位是否发生变化。
进一步地,所述执行模块还用于:
当所述方法名标识按组件查询时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表,得到与所述传入参数对应的域对象;
将所述域对象作为查询结果返回。
进一步地,所述执行模块还用于:
当所述方法名标识按条件查询且查询条件为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
将查询到的所述缓存定义哈希表还原为一个第一链表;
将所述第一链表作为查询结果返回。
进一步地,所述执行模块还用于:
当所述方法名标识按条件查询且查询条件不为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
根据所述查询条件对所述缓存定义哈希表进行数据过滤处理;
将数据过滤处理后的缓存定义哈希表还原为一个第二链表;
将所述第二链表作为查询结果返回。
上述各程序模块所执行的方法可参照本发明缓存处理方法各个实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有缓存处理程序,所述缓存处理程序被处理器执行时实现如上所述的缓存处理方法的步骤。
其中,在所述处理器上运行的缓存处理程序被执行时所实现的方法可参照本发明缓存处理方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (18)
1.一种缓存处理方法,其特征在于,所述缓存处理方法包括如下步骤:
当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;
根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;
若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;
若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。
2.如权利要求1所述的缓存处理方法,其特征在于,所述当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数的步骤之前,还包括:
在应用程序启动时,读取预设的缓存配置表,所述缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息;
根据所述缓存配置信息生成一个缓存定义哈希表,将所述缓存定义哈希表保存至预设的Java虚拟机级缓存定义区中;
从数据库中获取与所述缓存配置表对应的库表记录,根据所述库表记录生成一个缓存数据哈希表,将所述缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。
3.如权利要求2所述的缓存处理方法,其特征在于,所述缓存处理方法还包括:
通过预设的轮询线程,检测所述缓存配置表中的缓存配置信息是否发生变化;
若所述缓存配置信息发生变化,则根据变化后的缓存配置信息生成一个新的缓存定义哈希表,将所述Java虚拟机级缓存定义区中保存的所述缓存定义哈希表更新为所述新的缓存定义哈希表,同时,根据变化后的缓存配置信息对所述缓存数据区中保存的所述缓存数据哈希表进行更新。
4.如权利要求3所述的缓存处理方法,其特征在于,所述检测所述缓存配置表中的缓存配置信息是否发生变化的步骤包括:
检测所述缓存配置信息中的Java虚拟机级缓存功能使能位是否发生变化,所述Java虚拟机级缓存功能使能位用于控制Java虚拟机级缓存功能开启或关闭。
5.如权利要求3所述的缓存处理方法,其特征在于,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识插入、更新或删除数据时,执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据,并变更所述缓存配置表中的缓存刷新标识位,所述缓存刷新标识位用于控制刷新所述缓存数据区中保存的所述缓存数据哈希表;
所述检测所述缓存配置表中的缓存配置信息是否发生变化的步骤包括:
检测所述缓存配置信息中的缓存刷新标识位是否发生变化。
6.如权利要求2至5中任一项所述的缓存处理方法,其特征在于,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识按组件查询时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表,得到与所述传入参数对应的域对象;
将所述域对象作为查询结果返回。
7.如权利要求2至5中任一项所述的缓存处理方法,其特征在于,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识按条件查询且查询条件为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
将查询到的所述缓存定义哈希表还原为一个第一链表;
将所述第一链表作为查询结果返回。
8.如权利要求2至5中任一项所述的缓存处理方法,其特征在于,所述根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作的步骤包括:
当所述方法名标识按条件查询且查询条件不为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
根据所述查询条件对所述缓存定义哈希表进行数据过滤处理;
将数据过滤处理后的缓存定义哈希表还原为一个第二链表;
将所述第二链表作为查询结果返回。
9.一种缓存处理装置,其特征在于,所述缓存处理装置包括:
获取模块,用于当在Java虚拟机的任一线程中检测到调用数据库访问接口的指令时,获取当前调用的数据库访问接口的类名、方法名和传入参数;
第一判断模块,用于根据所述类名查询预设的缓存定义哈希表,判断所述缓存定义哈希表中是否存在与所述类名对应的库表缓存定义;
第二判断模块,用于若所述缓存定义哈希表中存在与所述类名对应的库表缓存定义,则判断当前是否已启用与所述库表缓存定义对应的Java虚拟机级缓存功能;
执行模块,用于若当前已启用与所述库表缓存定义对应的Java虚拟机级缓存功能,则根据所述方法名和所述传入参数执行对应的Java虚拟机级缓存数据读写操作。
10.如权利要求9所述的缓存处理装置,其特征在于,所述缓存处理装置还包括:
读取模块,用于在应用程序启动时,读取预设的缓存配置表,所述缓存配置表中记录有基于不同的数据库访问接口的类名设置的缓存配置信息;
第一生成模块,用于根据所述缓存配置信息生成一个缓存定义哈希表,将所述缓存定义哈希表保存至预设的Java虚拟机级缓存定义区中;
第二生成模块,用于从数据库中获取与所述缓存配置表对应的库表记录,根据所述库表记录生成一个缓存数据哈希表,将所述缓存数据哈希表保存至预设的Java虚拟机级缓存数据区中。
11.如权利要求10所述的缓存处理装置,其特征在于,所述缓存处理装置还包括:
检测模块,用于通过预设的轮询线程,检测所述缓存配置表中的缓存配置信息是否发生变化;
更新模块,用于若所述缓存配置信息发生变化,则根据变化后的缓存配置信息生成一个新的缓存定义哈希表,将所述Java虚拟机级缓存定义区中保存的所述缓存定义哈希表更新为所述新的缓存定义哈希表,同时,根据变化后的缓存配置信息对所述缓存数据区中保存的所述缓存数据哈希表进行更新。
12.如权利要求11所述的缓存处理装置,其特征在于,
所述检测模块,还用于检测所述缓存配置信息中的Java虚拟机级缓存功能使能位是否发生变化,所述Java虚拟机级缓存功能使能位用于控制Java虚拟机级缓存功能开启或关闭。
13.如权利要求11所述的缓存处理装置,其特征在于,
所述执行模块,还用于当所述方法名标识插入、更新或删除数据时,执行调用数据库访问接口的操作,以在数据库中插入、更新或删除对应的数据,并变更所述缓存配置表中的缓存刷新标识位,所述缓存刷新标识位用于控制刷新所述缓存数据区中保存的所述缓存数据哈希表;
所述检测模块,还用于检测所述缓存配置信息中的缓存刷新标识位是否发生变化。
14.如权利要求10至13中任一项所述的缓存处理装置,其特征在于,所述执行模块还用于:
当所述方法名标识按组件查询时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表,得到与所述传入参数对应的域对象;
将所述域对象作为查询结果返回。
15.如权利要求10至13中任一项所述的缓存处理装置,其特征在于,所述执行模块还用于:
当所述方法名标识按条件查询且查询条件为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
将查询到的所述缓存定义哈希表还原为一个第一链表;
将所述第一链表作为查询结果返回。
16.如权利要求10至13中任一项所述的缓存处理装置,其特征在于,所述执行模块还用于:
当所述方法名标识按条件查询且查询条件不为空时,根据所述传入参数查询所述缓存数据区中保存的所述缓存数据哈希表;
根据所述查询条件对所述缓存定义哈希表进行数据过滤处理;
将数据过滤处理后的缓存定义哈希表还原为一个第二链表;
将所述第二链表作为查询结果返回。
17.一种缓存处理设备,其特征在于,所述缓存处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的缓存处理程序,所述缓存处理程序被所述处理器执行时实现如权利要求1至8中任一项所述的缓存处理方法的步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有缓存处理程序,所述缓存处理程序被处理器执行时实现如权利要求1至8中任一项所述的缓存处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910328015.3A CN110096334A (zh) | 2019-04-19 | 2019-04-19 | 缓存处理方法、装置、设备及计算机可读存储介质 |
PCT/CN2020/078432 WO2020211570A1 (zh) | 2019-04-19 | 2020-03-09 | 缓存处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910328015.3A CN110096334A (zh) | 2019-04-19 | 2019-04-19 | 缓存处理方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110096334A true CN110096334A (zh) | 2019-08-06 |
Family
ID=67445604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910328015.3A Pending CN110096334A (zh) | 2019-04-19 | 2019-04-19 | 缓存处理方法、装置、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110096334A (zh) |
WO (1) | WO2020211570A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990439A (zh) * | 2019-12-13 | 2020-04-10 | 深圳前海环融联易信息科技服务有限公司 | 基于缓存的快速查询方法、装置、计算机设备及存储介质 |
CN111309768A (zh) * | 2020-02-20 | 2020-06-19 | 上海东普信息科技有限公司 | 信息检索方法、装置、设备及存储介质 |
WO2020211570A1 (zh) * | 2019-04-19 | 2020-10-22 | 深圳前海微众银行股份有限公司 | 缓存处理方法、装置、设备及计算机可读存储介质 |
CN112199391A (zh) * | 2020-09-30 | 2021-01-08 | 深圳前海微众银行股份有限公司 | 一种数据加锁检测方法、设备及计算机可读存储介质 |
CN112667680A (zh) * | 2020-12-17 | 2021-04-16 | 平安消费金融有限公司 | 查询数据的方法、装置和计算机设备 |
CN113110885A (zh) * | 2019-12-25 | 2021-07-13 | 深圳市华胜软件技术有限公司 | 一种应用软件连接数据库的方法、存储介质及终端设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169790A (zh) * | 2007-11-30 | 2008-04-30 | 中兴通讯股份有限公司 | 一种基于web应用的矩阵式数据缓存方法及装置 |
CN102542034A (zh) * | 2011-12-23 | 2012-07-04 | 北京人大金仓信息技术股份有限公司 | 一种数据库接口的结果集缓存方法 |
CN103246696A (zh) * | 2013-03-21 | 2013-08-14 | 宁波公众信息产业有限公司 | 高并发数据库的访问方法及应用于多服务器系统的方法 |
CN104657143A (zh) * | 2015-02-12 | 2015-05-27 | 中復保有限公司 | 高性能数据缓存方法 |
WO2017008659A1 (zh) * | 2015-07-14 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 一种获取域名后缀的方法及装置 |
CN107341212A (zh) * | 2017-06-26 | 2017-11-10 | 努比亚技术有限公司 | 一种缓存更新方法及设备 |
CN107346258A (zh) * | 2017-07-06 | 2017-11-14 | 北京微影时代科技有限公司 | 一种数据读写分离方法及装置 |
CN108628891A (zh) * | 2017-03-21 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 实现数据缓存层的方法、装置、电子设备和可读存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8019735B2 (en) * | 2004-05-21 | 2011-09-13 | Oracle International Corporation | Systems and methods for query caching |
CN105302895B (zh) * | 2015-10-21 | 2018-11-27 | 浪潮通用软件有限公司 | 一种数据缓存同步方法、服务器和客户端 |
CN106294565A (zh) * | 2016-07-27 | 2017-01-04 | 中国农业银行股份有限公司 | 一种数据库访问方法及系统 |
CN107967270A (zh) * | 2016-10-19 | 2018-04-27 | 北京京东尚科信息技术有限公司 | 实现多功能缓存的方法和系统 |
CN107463378A (zh) * | 2017-07-28 | 2017-12-12 | 深圳市丰巢科技有限公司 | 一种基于注解的本地缓存实现方法、存储设备及电子设备 |
CN110096334A (zh) * | 2019-04-19 | 2019-08-06 | 深圳前海微众银行股份有限公司 | 缓存处理方法、装置、设备及计算机可读存储介质 |
CN110109958A (zh) * | 2019-04-19 | 2019-08-09 | 深圳前海微众银行股份有限公司 | 缓存处理方法、装置、设备及计算机可读存储介质 |
-
2019
- 2019-04-19 CN CN201910328015.3A patent/CN110096334A/zh active Pending
-
2020
- 2020-03-09 WO PCT/CN2020/078432 patent/WO2020211570A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169790A (zh) * | 2007-11-30 | 2008-04-30 | 中兴通讯股份有限公司 | 一种基于web应用的矩阵式数据缓存方法及装置 |
CN102542034A (zh) * | 2011-12-23 | 2012-07-04 | 北京人大金仓信息技术股份有限公司 | 一种数据库接口的结果集缓存方法 |
CN103246696A (zh) * | 2013-03-21 | 2013-08-14 | 宁波公众信息产业有限公司 | 高并发数据库的访问方法及应用于多服务器系统的方法 |
CN104657143A (zh) * | 2015-02-12 | 2015-05-27 | 中復保有限公司 | 高性能数据缓存方法 |
WO2017008659A1 (zh) * | 2015-07-14 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 一种获取域名后缀的方法及装置 |
CN108628891A (zh) * | 2017-03-21 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 实现数据缓存层的方法、装置、电子设备和可读存储介质 |
CN107341212A (zh) * | 2017-06-26 | 2017-11-10 | 努比亚技术有限公司 | 一种缓存更新方法及设备 |
CN107346258A (zh) * | 2017-07-06 | 2017-11-14 | 北京微影时代科技有限公司 | 一种数据读写分离方法及装置 |
Non-Patent Citations (2)
Title |
---|
ZHANG YU: "OLAP Foreign Join Algorithm for MIC Coprocessor", JOURNAL OF SOFTWARE, vol. 28, no. 3, 31 March 2017 (2017-03-31), pages 490 - 501 * |
张伟;孙涛;刘振斌;: "基于Hash存储的高效DNS缓存系统", 计算机工程与设计, no. 08, 16 August 2017 (2017-08-16), pages 83 - 88 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020211570A1 (zh) * | 2019-04-19 | 2020-10-22 | 深圳前海微众银行股份有限公司 | 缓存处理方法、装置、设备及计算机可读存储介质 |
CN110990439A (zh) * | 2019-12-13 | 2020-04-10 | 深圳前海环融联易信息科技服务有限公司 | 基于缓存的快速查询方法、装置、计算机设备及存储介质 |
CN113110885A (zh) * | 2019-12-25 | 2021-07-13 | 深圳市华胜软件技术有限公司 | 一种应用软件连接数据库的方法、存储介质及终端设备 |
CN111309768A (zh) * | 2020-02-20 | 2020-06-19 | 上海东普信息科技有限公司 | 信息检索方法、装置、设备及存储介质 |
CN112199391A (zh) * | 2020-09-30 | 2021-01-08 | 深圳前海微众银行股份有限公司 | 一种数据加锁检测方法、设备及计算机可读存储介质 |
CN112199391B (zh) * | 2020-09-30 | 2024-02-23 | 深圳前海微众银行股份有限公司 | 一种数据加锁检测方法、设备及计算机可读存储介质 |
CN112667680A (zh) * | 2020-12-17 | 2021-04-16 | 平安消费金融有限公司 | 查询数据的方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2020211570A1 (zh) | 2020-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096334A (zh) | 缓存处理方法、装置、设备及计算机可读存储介质 | |
CN110109958A (zh) | 缓存处理方法、装置、设备及计算机可读存储介质 | |
US8996534B2 (en) | Custom caching | |
CN103593436B (zh) | 文件合并方法和装置 | |
CN110597859B (zh) | 一种分页查询数据的方法和装置 | |
US20110191544A1 (en) | Data Storage and Access | |
US7636736B1 (en) | Method and apparatus for creating and using a policy-based access/change log | |
US20090254594A1 (en) | Techniques to enhance database performance | |
US9135572B2 (en) | Method and arrangement for processing data | |
CN103927198A (zh) | 一种软件清理方法及装置 | |
CN109977129A (zh) | 多级数据缓存方法及设备 | |
CN106354851A (zh) | 数据缓存方法及装置 | |
CN108153812A (zh) | 数据通信的方法、装置、计算机设备及存储介质 | |
CN106021566A (zh) | 一种提高单台数据库并发处理能力的方法、装置及系统 | |
US20200342008A1 (en) | System for lightweight objects | |
CN108614847A (zh) | 一种数据的缓存方法及系统 | |
CN102542036B (zh) | 使用优化的表 | |
CN106991059B (zh) | 对数据源的访问控制方法 | |
CN101217449A (zh) | 远程调用管理方法 | |
CN115455058A (zh) | 缓存数据的处理方法、装置、计算机设备及存储介质 | |
US7725507B1 (en) | Dynamic directories | |
US8533398B2 (en) | Combination based LRU caching | |
CN108733584A (zh) | 用于优化数据缓存的方法和设备 | |
CN108228624A (zh) | 数据获取及更新方法、片单服务系统及片单系统 | |
CN108628540A (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 |