CN107357814A - 一种数据加载方法、装置及终端 - Google Patents
一种数据加载方法、装置及终端 Download PDFInfo
- Publication number
- CN107357814A CN107357814A CN201710414056.5A CN201710414056A CN107357814A CN 107357814 A CN107357814 A CN 107357814A CN 201710414056 A CN201710414056 A CN 201710414056A CN 107357814 A CN107357814 A CN 107357814A
- Authority
- CN
- China
- Prior art keywords
- data
- cache key
- cache
- key
- caching
- 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
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
本发明涉及一种数据加载方法、装置及终端。该方法包括:步骤1、接收数据加载请求;步骤2、识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;步骤3、根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行步骤4,若是,执行步骤5;步骤4、调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行步骤5;步骤5、提取并返回与所述缓存键关联的缓存数据。本发明能解决开发成本高、维护难度大、不同步风险高等问题。
Description
技术领域
本发明涉及网络数据加载技术。
背景技术
“同一次业务请求”过程中,往往会出现某种操作被重复执行,而逻辑上来讲如果只执行一次是最理想的,这里的“某种操作”特指那些比较耗费时间的操作,比如“调用数据库的IO操作”、“调用外部接口的网络访问操作”等。
举个例子,“从数据库中获取登录用户的信息”(GetUserFromDB)这个操作,如果用户的一次请求中包含6个小方法,这6个小方法有4次需要获取该用户的登录信息,最理想的情况,是4次只有1次是从数据库中加载,其余的3次则直接从缓存中获取。
以上例子,要达到这种效果,目前一般有以下方案:
a)增加一个专门的缓存层项目,所有获取该信息时,全部从该层获取;
缺陷:过于“重量级”,需要设立单独的项目,容易小题大做,推高开发与维护成本。
b)上述例子,在所有“小逻辑方法”中,均增加“登录人”这一参数,在第一次加载后,往后继续传递;
缺陷:耦合性太强,“小逻辑方法”间将会互相依赖与影响,容易导致逻辑不清,并且当出现需要加载其他信息时,除了需要变更全部,而且会存在参数过多的问题,不易于后续的维护与扩展。
c)“登录用户”信息采用站点全局缓存模式,全部从缓存中加载,降低加载成本;
缺陷:需要维护额外的全局缓存,并且做好缓存的更新与同步策略,存在数据不同步风险。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供一种数据加载方法,其能解决开发成本高、维护难度大、不同步风险高等问题。
本发明的目的之二在于提供一种数据加载装置,其能解决开发成本高、维护难度大、不同步风险高等问题。
本发明的目的之三在于提供一种终端,其能解决开发成本高、维护难度大、不同步风险高等问题。
为了实现上述目的之一,本发明所采用的技术方案如下:
一种数据加载方法,其包括以下步骤:
步骤1、接收数据加载请求;
步骤2、识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
步骤3、根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行步骤4,若是,执行步骤5;
步骤4、调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行步骤5;
步骤5、提取并返回与所述缓存键关联的缓存数据。
所述缓存键的数量为多个,多个缓存键在同一Web请求生命周期中均相异。
所述数据获取逻辑采用方法委托对象技术。
为了实现上述目的之二,本发明所采用的技术方案如下:
一种数据加载装置,其包括以下模块:
接收模块,用于接收数据加载请求;
识别模块,用于识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
判断模块,用于根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行缓存模块,若是,执行提取模块;
缓存模块,用于调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行提取模块;
提取模块,用于提取并返回与所述缓存键关联的缓存数据。
为了实现上述目的之三,本发明所采用的技术方案如下:
一种终端,其包括存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于运行所述程序指令,以执行以下步骤:
步骤1、接收数据加载请求;
步骤2、识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
步骤3、根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行步骤4,若是,执行步骤5;
步骤4、调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行步骤5;
步骤5、提取并返回与所述缓存键关联的缓存数据。
相比现有技术,本发明的有益效果在于:
1、通过将缓存数据从各模块中抽离出来,摒弃原先散落在各模块中的数据加载逻辑,有效降低了各模块内部的复杂度;
2、从数据库直接对数据的提取转换为以键值对的方式从缓存中提取数据,易于封装针对特定场景特定数据的调用模式,形成开发规范,降低实施成本,从而更加关注于业务的实现本身;
3、提升应用性能的同时,屏蔽了底层的缓存策略以及针对缓存数据的传递、同步,不需要在数据缓存上付出额外的管理成本。
附图说明
图1为本发明实施例一的数据加载方法的流程图;
图2为本发明实施例一的数据加载容器的架构示意图;
图3为本发明实施例二的数据加载装置的结构示意图;
图4为本发明实施例三的终端的结构示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
实施例一
在说明本实施例的数据加载方法前,先解释本实施例的实现原理,如图2所示,为本实施例设计的一种数据加载容器(Ucsmy.DataContainor)的架构示例,其实质是数据调用规则。本实施例以User(用户)加载器和Products(产品)加载器为例进行说明,当然,加载其他数据类型时,也应该先定义对应的数据加载器。User加载器是用于调用用户信息类型的方法规则,Products加载器是用于调用产品信息类型的方法规则。在User加载器中,Key1定义为用户类型数据的缓存键,GetUserFromDB为用于获取用户信息的实际数据的方法逻辑;在Products加载器中,Key2定义为产品类型数据的缓存键,GetProductsFromDB为用于获取产品信息的实际数据的方法逻辑。Key1-User、Key2-Products分别为对应的键值对。
也就是说,一个数据加载器中包括缓存键和数据获取逻辑,所述缓存键的数量为多个,多个缓存键在同一Web请求生命周期中均相异,即不能重复,这样才能准确命中缓存数据;所述数据获取逻辑采用方法委托对象技术,优选可以采用.NET中的方法委托对象技术(delegate)。缓存机制可包含缓存初始化、缓存提取、缓存过期等,可根据实际的应用环境,决定不同的缓存策略实现机制。
数据加载容器(Ucsmy.DataContainor)对于在Web应用开发领域中,实现“单次Web请求完整生命周期内”的数据懒加载以及数据缓存,提升Web应用性能。
如图1所示,利用图2所示的数据加载容器的一种数据加载方法,其包括以下步骤:
步骤S1、接收用户在Web上操作的数据加载请求。
步骤S2、识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键。例如,类别为用户信息,则对应的缓存键为Key1,类别为产品信息,则对应的缓存键为Key2。
步骤S3、根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行步骤S4,若是,执行步骤S5;
步骤S4、调用与所述缓存键对应的数据获取逻辑(GetUserFromDB或GetProductsFromDB),从数据库中得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行步骤S5;
步骤S5、提取并返回与所述缓存键关联的缓存数据至请求方。
上述方法的代码示例如下:
实施例二
如图3所示,本实施例为实现实施例一的方法的虚拟装置,具体是一种数据加载装置,其包括以下模块:
接收模块,用于接收数据加载请求;
识别模块,用于识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
判断模块,用于根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行缓存模块,若是,执行提取模块;
缓存模块,用于调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行提取模块;
提取模块,用于提取并返回与所述缓存键关联的缓存数据。
实施例三
如图4所示,一种终端,为实现实施例一的方法的实体装置,其具体包括存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于运行所述程序指令,以执行如图1所示的步骤。
通过对上述各实施例的描述,本发明相比于现有技术,简洁、灵活、不需要增加太多额外开发成本,本发明还具备“懒加载”的特性,也即是说,可以将“登录用户信息”,从背景技术所描述的6个小方法中剥离出来,彻底解耦,而在“真正需要”的时候,才会去触发加载该信息。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
Claims (9)
1.一种数据加载方法,其特征在于,包括以下步骤:
步骤1、接收数据加载请求;
步骤2、识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
步骤3、根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行步骤4,若是,执行步骤5;
步骤4、调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行步骤5;
步骤5、提取并返回与所述缓存键关联的缓存数据。
2.如权利要求1所述的数据加载方法,其特征在于,所述缓存键的数量为多个,多个缓存键在同一Web请求生命周期中均相异。
3.如权利要求1所述的数据加载方法,其特征在于,所述数据获取逻辑采用方法委托对象技术。
4.一种数据加载装置,其特征在于,包括以下模块:
接收模块,用于接收数据加载请求;
识别模块,用于识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
判断模块,用于根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行缓存模块,若是,执行提取模块;
缓存模块,用于调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行提取模块;
提取模块,用于提取并返回与所述缓存键关联的缓存数据。
5.如权利要求4所述的数据加载装置,其特征在于,所述缓存键的数量为多个,多个缓存键在同一Web请求生命周期中均相异。
6.如权利要求4所述的数据加载装置,其特征在于,所述数据获取逻辑采用方法委托对象技术。
7.一种终端,其特征在于,包括存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于运行所述程序指令,以执行以下步骤:
步骤1、接收数据加载请求;
步骤2、识别所述数据加载请求中请求加载的数据的类别,提取与所述类别对应的缓存键;
步骤3、根据所述缓存键查找缓存中是否有与所述缓存键关联的缓存数据,若否,则执行步骤4,若是,执行步骤5;
步骤4、调用与所述缓存键对应的数据获取逻辑,得到相应的实际数据,将所述实际数据与所述缓存键进行关联并存储于缓存中,将与所述缓存键关联的实际数据定义为缓存数据,然后执行步骤5;
步骤5、提取并返回与所述缓存键关联的缓存数据。
8.如权利要求7所述的终端,其特征在于,所述缓存键的数量为多个,多个缓存键在同一Web请求生命周期中均相异。
9.如权利要求7所述的终端,其特征在于,所述数据获取逻辑采用方法委托对象技术。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710414056.5A CN107357814A (zh) | 2017-06-05 | 2017-06-05 | 一种数据加载方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710414056.5A CN107357814A (zh) | 2017-06-05 | 2017-06-05 | 一种数据加载方法、装置及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107357814A true CN107357814A (zh) | 2017-11-17 |
Family
ID=60271989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710414056.5A Pending CN107357814A (zh) | 2017-06-05 | 2017-06-05 | 一种数据加载方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107357814A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657143A (zh) * | 2015-02-12 | 2015-05-27 | 中復保有限公司 | 高性能数据缓存方法 |
US20160077972A1 (en) * | 2014-09-16 | 2016-03-17 | International Business Machines Corporation | Efficient and Consistent Para-Virtual I/O System |
-
2017
- 2017-06-05 CN CN201710414056.5A patent/CN107357814A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160077972A1 (en) * | 2014-09-16 | 2016-03-17 | International Business Machines Corporation | Efficient and Consistent Para-Virtual I/O System |
CN104657143A (zh) * | 2015-02-12 | 2015-05-27 | 中復保有限公司 | 高性能数据缓存方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109325351B (zh) | 一种基于众测平台的安全漏洞自动化验证系统 | |
CN107678776A (zh) | 多模块版本依赖关系构建方法、装置、服务器和存储介质 | |
CN103631931B (zh) | 一种数据分级存储方法及系统 | |
CN105550206B (zh) | 结构化查询语句的版本控制方法及装置 | |
KR101719500B1 (ko) | 캐싱된 플로우들에 기초한 가속 | |
CN104423982B (zh) | 请求的处理方法和处理设备 | |
CN110505228A (zh) | 基于边缘云架构的大数据处理方法、系统、介质及装置 | |
CN109033403A (zh) | 用于搜索区块链数据的方法、装置及存储介质 | |
CN107463378A (zh) | 一种基于注解的本地缓存实现方法、存储设备及电子设备 | |
CN103995755A (zh) | 基于移动终端的服务器优化方法及服务器系统 | |
CN110245145A (zh) | 关系型数据库到Hadoop数据库的结构同步方法和装置 | |
CN104301304A (zh) | 基于大型isp互联口的漏洞检测系统及其方法 | |
CN106372266A (zh) | 一种基于切面和配置文件的云操作系统缓存及访问方法 | |
CN107659455A (zh) | 一种iOS端Mock数据的方法、存储介质、设备及系统 | |
CN110401697A (zh) | 一种并发处理http请求的方法、系统及设备 | |
US20090049458A1 (en) | Interface for application components | |
CN106021566A (zh) | 一种提高单台数据库并发处理能力的方法、装置及系统 | |
CN110019873A (zh) | 人脸数据处理方法、装置及设备 | |
CN109918384A (zh) | 一种数据同步方法及其设备、存储介质、电子设备 | |
CN113722114A (zh) | 一种数据服务的处理方法、装置、计算设备及存储介质 | |
CN108566411A (zh) | 静态资源获取方法、电子设备和存储介质 | |
CN109284590A (zh) | 访问行为安全防护的方法、设备、存储介质及装置 | |
CN109559121A (zh) | 交易路径调用异常分析方法、装置、设备及可读存储介质 | |
CN107436920A (zh) | Node.js权限控制方法、存储介质、电子设备及系统 | |
CN107357814A (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: 20171117 |