一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

应用程序的数据缓存方法、数据访问方法及电子设备与流程

2022-07-30 04:38:49 来源:中国专利 TAG:
1.本技术涉及数据存储
技术领域
:,尤其涉及一种应用程序的数据缓存方法、数据访问方法及电子设备。
背景技术
::2.随着电子设备智能化的发展和所能实现的功能的增加,电子设备的操作系统越来越复杂,电子设备承载的应用程序越来越多。电子设备在运行过程中会频繁地申请和释放内存,即频繁的缓存数据和访问数据。访问数据时,如果内存中不存在缓存数据,则访问硬盘(内存缓存服务器)中的数据。3.目前访问内存缓存服务器通常的技术是,创建需要访问的数据与内存缓存服务器之间的连接关系。这种关系是通过代码实现的,因此在程序运行时,这种关系是固定不变的。4.然而,针对需要对数据进行拆分,对内存进行扩展的场景,目前通用的方案中,只能通过更改代码实现拆分和扩展。因此拆分和扩展的过程需要停止服务才能进行,造成拆分和扩展的效率较低。技术实现要素:5.本技术提供了一种应用程序的数据缓存方法、数据访问方法及电子设备,用于解决针对需要对数据进行拆分,对内存进行扩展的场景,目前通用的方案中,只能通过更改代码实现拆分和扩展。因此拆分和扩展的过程需要停止服务才能进行,造成拆分和扩展的效率较低的问题。6.第一方面,本实施例提供一种应用程序的数据缓存方法,包括:7.在配置文件中创建应用程序的数据库表与内存服务器的内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息用于指示所述数据库表与所述内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;8.调用所述配置文件中的所述内存服务连接信息,将所述数据库表缓存至与所述数据库表具有映射关系的所述内存服务器。9.第二方面,本实施例提供一种应用程序的数据访问方法,包括:获取用户数据访问请求,其中,所述用户数据访问请求携带有数据库表的标识;10.从配置文件中调取所述数据库表的标识对应内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息指示所述数据库表与内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;11.根据所述内存服务连接信息,访问与所述数据库表具有映射关系的所述内存服务器。12.第三方面本实施例提供一种电子设备,包括:13.内存服务创建单元,用于在配置文件中创建应用程序的数据库表与内存服务器的内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息用于指示所述数据库表与所述内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;14.数据缓存单元,用于调用所述配置文件中的所述内存服务连接信息,将所述数据库表缓存至与所述数据库表具有映射关系的所述内存服务器。15.第三方面本实施例提供一种电子设备,包括:16.请求获取单元,用于获取用户数据访问请求,其中,所述用户数据访问请求携带有数据库表的标识;17.连接调取单元,用于从配置文件中调取所述数据库表的标识对应内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息用于指示所述数据库表与内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;18.数据访问单元,用于根据所述内存服务连接信息,访问与所述数据库表具有映射关系的所述内存服务器。19.本技术实施例提供的应用程序的数据缓存方法、数据访问方法及电子设备。在配置文件中创建内存服务连接信息,内存服务连接信息用于指示数据库表与内存服务器的映射关系,数据库表与至少一个内存服务器具有映射关系。调用配置文件中的内存服务连接信息,将数据库表缓存至与数据库表具有映射关系的内存服务器。访问应用程序数据时,调用内存服务连接信息,访问与数据库表具有映射关系的内存服务器。本技术的技术方案利用配置文件创建内存服务连接信息,由于配置文件为可实时更改且实时生效的文件,因此在拆分数据和扩展内存时不需要停止服务,从而提升拆分数据和扩展内存的效率。附图说明20.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。21.图1中示例性示出了根据示例性实施例所涉及的实施环境的示意图;22.图2中示例性示出了根据示例性实施例示出的一种装置200的框图;23.图3中示例性示出了根据示例性实施例示出的数据访问流程图;24.图4中示例性示出了根据示例性实施例示出的应用程序的数据缓存方法的流程图;25.图5中示例性示出了本技术实施例提供的配置文件结构图;26.图6中示例性示出了本技术实施例提供的配置文件加载过程流程图;27.图7中示例性示出了本技术实施例提供的数据拆分过程流程图;28.图8中示例性示出了本技术实施例提供的内存服务连接信息获取原理示意图;29.图9中示例性示出了本技术实施例提供的应用程序的数据访问方法的流程图;30.图10中示例性示出了本技术实施例提供的数据缓存和数据访问同时进行的过程流程图;31.图11中示例性示出了本技术实施例提供的用于数据缓存的电子设备的结构示意accessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammablereadonlymemory,简称eprom),可编程只读存储器(programmablered-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。存储器204中还存储有一个或多个模块,该一个或多个模块被配置成由该一个或多个处理器218执行,以完成下述图3、图6、图9任一所示方法中的全部或者部分步骤。43.电源组件206为装置200的各种组件提供电力。电源组件206可以包括电源管理系统,一个或多个电源,及其他与为装置200生成、管理和分配电力相关联的组件。44.多媒体组件208包括在所述装置200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(liquidcrystaldisplay,简称lcd)和触摸面板。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。屏幕还可以包括有机电致发光显示器(organiclightemittingdisplay,简称oled)。45.音频组件210被配置为输出和/或输入音频信号。例如,音频组件210包括一个麦克风(microphone,简称mic),当装置200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器204或经由通信组件216发送。在一些实施例中,音频组件210还包括一个扬声器,用于输出音频信号。46.传感器组件214包括一个或多个传感器,用于为装置200提供各个方面的状态评估。例如,传感器组件214可以检测到装置200的打开/关闭状态,组件的相对定位,传感器组件214还可以检测装置200或装置200一个组件的位置改变以及装置200的温度变化。在一些实施例中,该传感器组件214还可以包括磁传感器,压力传感器或温度传感器。47.通信组件216被配置为便于装置200和其他设备之间有线或无线方式的通信。装置200可以接入基于通信标准的无线网络,如wifi(wireless-fidelity,无线保真)。在一个示例性实施例中,通信组件216经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件216还包括近场通信(nearfieldcommunication,简称nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(radiofrequencyidentification,简称rfid)技术,红外数据协会(infrareddataassociation,简称irda)技术,超宽带(ultrawideband,简称uwb)技术,蓝牙技术和其他技术来实现。48.在示例性实施例中,装置200可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器、数字信号处理设备、可编程逻辑器件、现场可编程门阵列、控制器、微控制器、微处理器或其他电子元件实现,用于执行下述方法。49.内存缓存技术为提高应用程序性能的通用方案,本发明限定于内存缓存数据同时存储在硬盘数据库(内存服务器)中的场景。如图3所示的数据访问流程图,在该场景中,用户请求首先访问内存中的缓存数据,如果内存中不存在缓存数据,则访问硬盘中的数据库数据。在一些实施例中,当内存缓存需要存储在不同服务器时,需要创建多套固定的内存服务连接、数据库连接,在访问内存缓存时,需要将访问的数据库表与内存服务器使用代码建立固定的对应关系。50.举例来说,一个内存服务连接仅限于访问固定的数据库表,且在代码开发阶段将该访问关系固化在了代码中。如果需要拆分数据库表(比如一个内存服务器保存了10张数据库表的数据,且该服务器最大可用内存为64g,当缓存数据总量大于64g时,如果想让更多的数据存储在内存服务器中,就需要将10张表中的一部分拆到另一台内存服务器中),就需要进行代码变更,新增加一套内存服务连接配置,即增加代码将部分数据表的访问指定到新的内存服务器中。这样导致如果想要拆分数据和扩展内存,就需要停止服务才能进行,拆分数据和扩展内存的效率较低。51.为了解决上述实施例的问题,本技术提供一种应用程序的数据缓存方法。图4是根据一示例性实施例示出的一种应用程序的数据缓存方法的流程图。该数据缓存方法的适用范围和执行主体,例如,该方法用于图1所示实施环境的智能设备110。如图3所示,该数据缓存方法,可以包括以下步骤。52.在步骤s101中,在配置文件中创建应用程序的数据库表与内存服务器的内存服务连接信息。其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息用于指示所述数据库表与所述内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系。53.应用开发框架加载到内存中的解析结果为配置文件中包含的各个配置项的具体内容。具体地,配置文件中的配置项可以是与应用开发框架相关的环境变量,也可以是与应用程序相关的环境变量。另外,为了便于应用程序访问内存中的解析结果,在该应用开发框架中还设置有用于供应用程序读取内存中加载的解析结果的读取接口。54.在该具体实施例中,以应用开发框架为hero框架为例进行说明,为了便于理解,先对本发明中的hero框架进行简单介绍:hero框架是发明人提出的一种高性能的开发框架,其中的代码可以通过go语言进行编译,由于go语言专门针对多处理器系统应用程序的编程进行了优化,因此使用go语言编译的程序具有执行速度更快,且更加安全、支持并行进程等诸多优势。55.在一些实施例中,可以预先设置配置文件模板库,该配置文件模板库中包含多个配置项以及各个配置项的格式规范;从配置文件模板库中选择至少一个配置项,并根据所选择的配置项的格式规范为其设置对应的项目内容。具体地,该配置文件模板库可以由本发明中的其他工具链(如应用编译软件等)提供。例如,当开发人员通过一款特定的应用编译软件创建一个应用程序时,由该应用编译软件根据预先存储的配置文件模板库自动地为该应用程序生成一个配置文件模板。其中,应用编译软件可以是go语言编译软件、vc编译软件等各类软件。由该应用编译软件自动生成的配置文件模板中包含多个配置项,开发人员只需从中选择若干配置项,并根据所选择的配置项的格式规范为其设置对应的项目内容即可。56.配置文件中包含的配置项既可以是与hero框架相关的环境变量,也可以是与该游戏应用程序相关的环境变量。例如,与hero框架相关的环境变量包括:服务加载路径、go语言路径(也叫gopass)等。与该游戏应用程序相关的环境变量包括:该游戏应用程序在运行过程中需调用的动态链接库或数据库的信息等,其中,数据库的信息又包括数据库端口、数据库的用户名和密码等。除此之外,开发人员还可以灵活配置其他多种配置项。57.配置文件中的各个配置项可以通过key-value的形式进行存储,配置项的项目名称通过key来表示,配置项的具体项目内容通过value来表示。key-value存储方式能够节约存储空间,提高查询效率。在本实施例中,配置文件通过yaml语言进行编写,在本发明其他的实施例中,配置文件也可以通过xml、js等其他语言进行编写。58.如图5所示的配置文件示意图,在本发明实施例的配置文件中,映射的key为数据库表,value为内存服务连接信息。数据库表与内存服务连接信息建立映射关系之后,利用具有映射关系的内存服务连接信息将数据缓存至对应的内存服务器。59.举例来说,配置文件的redisconig(配置格式)如下:60.default(host:0.0.0.000;port:123;password:123);61.redis001(host:0.0.0.010;port:123;password:123;tables:[table_1,table_2]);[0062]redis002(host:0.0.0.012;port:123;password:123;tables:[table_3,table_4])。[0063]其中,default表示默认内存服务器。host表示宿主ip(internetprotocoladdress,互联网协议地址),port表示端口,passport表示验证密码。redis001表示编号为1的内存服务器。redis002表示编号为2的内存服务器。tables表示与内存服务器建立映射关系的数据库表。[0064]应用程序根据每个连接配置下的tables配置,设置数据库表与内存服务连接信息的映射关系,设置后如表1所示:[0065]table_1redis001table_2redis001table_3redis002table_4redis002[0066]表1数据库表与内存服务器的映射关系示例[0067]上述配置表示table_1与table-2均与redis001建立映射关系,table_3与table_4均与redis002建立映射关系。[0068]当需要为table_5单独创建一套内存缓存服务时,在创建好内存缓存服务时,仅需要增加以下配置即可,增加配置后重启应用程序,自动生效。[0069]redis003(host:0.0.0.013port:123password:123;tables:[table_5])。[0070]更改后的映射关系如表2所示:[0071]table_1redis001table_2redis001table_3redis002table_4redis002table_5redis003[0072]表2数据库表与内存服务器的映射关系示例[0073]当需要将table_1,修改成与table_5同一套内存缓存服务时,仅需要将redis001下的table_1删除,并在redis003上增加table_5配置,最终配置格式如下:[0074]default(host:0.0.0.000;port:123;password:123);[0075]redis001(host:0.0.0.010;port:123;password:123;tables:[table_2]);[0076]redis002(host:0.0.0.012;port:123;password:123;tables:[table_3,table_4]);[0077]redis003(host:0.0.0.012;port:123;password:123;tables:[table_1,table_5])。[0078]更改后的映射关系如表3所示:[0079]table_1redis003table_2redis001table_3redis002table_4redis002table_5redis003[0080]本发明通过增加数据库表与内存服务连接信息的关联配置,将数据表的访问与内存服务器的连接进行了解耦,将固化的关系变为了灵活的配置。[0081]在一些实施中,配置文件具体的加载过程如图6所示的流程图,包括以下步骤:[0082]s201:接收配置文件加载指令。在本发明实施例中,加载配置文件可以分为动态加载导出目录、动态更新功能开关和配置参数等。其中,导出目录是对外提供访问服务的文件目录。功能开关包括访问审计特性动态开关、内存优化特性动态开关等。参数是指配置文件中包含的各配置项。在本发明实施例中,对动态加载导出目录的具体过程展开介绍,动态更新功能开关、配置参数的操作过程与动态加载导出目录的过程类似,在此不再赘述。[0083]加载指令用于表示对配置文件执行何种操作。根据不同的操作需求,加载指令可以划分为不同的类型,例如,更新配置文件、添加配置文件等操作。在具体实现中,用户可以通过在相关界面上手动编辑配置信息,实现动态加载;也可以通过命令行的形式,实现动态加载。使用命令行或界面动态加载时,其封装了修改配置文件的功能,故直接操作即可。[0084]s202:依据所述加载指令中携带的目录id,加载对应的配置信息。[0085]目录id是导出目录的标识信息。依据该目录id,可以查找对应的导出目录,从而获取对应的配置信息。[0086]s203:依据所述加载指令所属的类型,对所述配置信息对应的导出目录进行验证。在本发明实施例中,对导出目录的验证主要是判断服务器内存中是否存在加载指令中携带的目录id。[0087]s204:当所述导出目录通过验证后,依据所述配置信息对所述导出目录的配置文件进行修改。对于不同类型的动态加载指令,其对应的验证结论不同。当所述动态加载指令属于更新配置文件时,要实现对配置文件的动态更新,首先内存中应该存在有该目录id,也即当服务器内存中存在该目录id时,则说明该导出目录通过了验证,从而可以依据该目录id,查找对应的配置文件,并将该配置信息更新到该配置文件中,完成对配置文件的有效更新。[0088]当所述加载指令属于添加配置文件时,要实现对配置文件的动态添加,首先内存中不应该存在该目录id,也即当服务器内存中不存在该目录id时,则说明该导出目录通过了验证,则在所述服务器内存中添加所述目录id以及所述配置信息,完成对配置文件的有效添加。[0089]上述加载配置文件的实施例中,通过动态加载配置文件的方式,使修改后的配置文件及时生效。动态加载过程中业务不中断,对系统运维有很大的帮助,提高了系统维护的工作效率,减少了业务影响范围。[0090]以动态加载导出目录为例,除了上述介绍中对配置文件的添加和更新外,为了更加完善配置文件的功能,在本发明实施例中,还可以设置删除导出目录的功能。具体的,服务器可以接收导出目录的删除指令;依据所述删除指令中携带的目录id,从服务器内存中查找是否存在所述目录id对应的导出目录;当服务器内存中存在所述目录id对应的导出目录时,则将所述导出目录及其对应的配置信息从所述服务器内存中删除。[0091]在一些实施例中,配置文件的获取方法可以包括:应用程序启动后从分布式配置中心获取配置文件,并将配置文件缓存到本地文件系统中,缓存的配置文件通过应用程序对应的节点服务器地址来标识。当分布式配置中心服务不可用时,应用程序重启后通过节点服务器地址在本地缓存中寻找对应的配置文件。客户端在确定目标应用程序处于本地模式时,直接从目标应用程序对应的本地缓存中读取生效配置文件。[0092]在步骤s102中,调用所述配置文件中的所述内存服务连接信息,将所述数据库表缓存至与所述数据库表具有映射关系的所述内存服务器。[0093]可以将创建的内存服务连接信息保存在缓存模块,缓存模块还用于保存内存服务器信息表(包括内存服务器ip地址、内存服务器端口、内存服务器可用空间等信息)。内存服务器可以实时向缓存模块上报内存服务器信息。缓存模块接收到应用程序的数据缓存请求时,请求携带有数据库表的信息。先调用配置文件中的内存服务连接信息,根据内存服务连接信息和请求携带的数据库表的信息,查找与数据库表具有映射关系的内存服务器。查找到具有映射关系的内存服务器的信息表后,利用内存服务器的信息表,将数据表缓存至该内存服务器。[0094]本技术实施例提供的应用程序的数据缓存方法。在配置文件中创建内存服务连接信息,内存服务连接信息用于指示数据库表与内存服务器的映射关系,数据库表与至少一个内存服务器具有映射关系。调用配置文件中的内存服务连接信息,将数据库表缓存至与数据库表具有映射关系的内存服务器。访问应用程序数据时,调用内存服务连接信息,访问与数据库表具有映射关系的内存服务器。本技术的技术方案利用配置文件创建内存服务连接信息,由于配置文件为可实时更改且实时生效的文件,因此在拆分数据和扩展内存时不需要停止服务,从而提升拆分数据和扩展内存的效率。[0095]在一些实施例中,一个数据库表可预先设置与至少两个内存服务器建立映射关系。如图7所示的数据拆分流程示意图,数据拆分过程可以包括如下步骤:[0096]在步骤s301中,获取所述数据库表的数据总量大小。[0097]在步骤s302中,在所述数据库表的数据总量大小大于第一内存服务器的可用内存大小时,将所述数据库表拆分为第一子表和第二子表。[0098]拆分数据库表时,先删除原始待拆分数据库表,再提交生成的多个拆分后数据库表。对应到数据库上为先将原始数据修改为无效状态,再新增多条有效的数据。流式计算框架实时监听业务数据库(主库、从库均可)的二进制日志binlog,将binlog的信息按预定的格式组装起来,封装成业务模型,格式化成json等结构的数据之后,回写到消息队列(例如:kafka等)中。就数据库表库而言,对数据库表的操作类型一般有新增、修改、删除这三种类型,那么,对应的操作日志binlog形成的消息也就包括新增、修改、删除这三种类型。一条消息对应数据库表库中发生变更的一行记录,如果一条数据库表库操作(sql)语句修改了数据库表库的多行记录,那么,该数据库表库操作语句写到消息队列中也是多条消息。流式计算框架实时消费消息队列中的消息以获取数据库表拆分信息,并做实际的业务逻辑处理。数据库表拆分信息可以为删除待拆分数据库表信息或生成拆分后数据库表信息。[0099]数据库表拆分信息主要包括数据库表标识和数据库表值。根据不同业务的需求,数据库表拆分信息还可以包括其他内容,例如:数据库表拆分时间、业务系统数据库表库标识等等。根据本发明的实施例,数据库表拆分信息主要可以包括删除待拆分数据库表信息和生成拆分后数据库表信息两种类型。若数据库表拆分信息为删除待拆分数据库表信息,则数据库表拆分信息中包括待拆分数据库表和待拆分数据库表标识;若数据库表拆分信息为生成拆分后数据库表信息,则数据库表拆分信息包括拆分后数据库表、拆分后数据库表标识和待拆分数据库表标识。由此可以知道,无论数据库表拆分信息是删除待拆分数据库表信息还是生成拆分后数据库表信息,其中都包含有待拆分数据库表标识。因此,及时将数据库表库表拆分为第一子表和第二子表,第一子表和第二子表都具有原数据库表库表的标识,在后续的数据库表访问时,不会发生对拆分后的数据库表库表无法进行访问的情况。[0100]在步骤s303中,将所述第一子表缓存至所述第一内存服务器,其中,所述第一子表的数据总量大小小于或等于所述第一内存服务器的可用内存大小。为了保证第一子表的数据总量大小小于第一内存服务器的可用内存大小,在拆分数据库表之前,先获取第一内存服务器(第一内存服务器的优先级高于其他内存服务器的优先级,因此先将数据缓存至第一内存服务器)的可用内存大小。可以在数据库拆分时,将第一子表的数据总量大小设置为小于或等于第一内存服务器的可用内存大小。因此,在数据缓存时,可以将第一子表首先缓存至第一内存服务器。[0101]如果需要缓存的数据库表的数据总量大小小于第一内存服务器的可用内存大小,则将直接将数据库表缓存至第一内存服务器中,而不需要拆分数据库表。[0102]在步骤s304中,如果存在第二内存服务器且所述第二子表的数据总量大小小于或等于所述第二内存服务器的可用内存大小,将所述第二子表缓存至所述第二内存服务器,在所述配置文件中,所述数据库表与所述第一内存服务器和所述第二内存服务器均具有映射关系。[0103]在一些实施例中,如果不存在所述第二内存服务器时,将所述第二子表缓存至备用内存服务器,其中,所述备用内存服务器与所述数据库表不具备映射。[0104]在一些实施例中,可以对第一数据库表和第二数据库表设置业务场景标识,即不同的数据库表对应不同的业务场景。如果第一数据库表和第二数据库表的业务场景标识相同,则将所述第一数据库表和所述第二数据库表缓存至同一所述内存服务器。如果所述第一数据库表和所述第二数据库表的业务场景标识不相同时,将所述第一数据库表和所述第二数据库表缓存至不同的所述内存服务器。这样,在后续数据库访问时,针对同一业务场景,可以只访问一个内存服务器,而不需要访问其它的内存服务器,从而提升数据访问的效率。[0105]在一些实施例中,在所述配置文件中创建多套所述内存服务连接信息。例如,可以创建内存服务连接信息池。随机调用所述配置文件中的所述内存服务连接信息,将所述数据库表缓存至与所述数据库表具有映射关系的所述内存服务器。这样程序在缓存数据时,通过从内存服务连接信息池中动态获取内存服务连接信息,进一步提升数据缓存的灵活性。[0106]在一些实施例中,可以建立由时间队列项构成的时间循环队列,所述时间循环队列有一游标,所述游标所指向的时间队列项为当前时间,每隔指定时间,游标移动至下一时间队列项。每一个时间队列项对应一个内存服务器。在缓存数据时,根据时间分配,每隔一定时间移动一格,避免数据都缓存到一个内存服务器中。[0107]举例来说,如图8所示的内存服务连接信息获取原理示意图。图8所示的内存服务连接信息均为与当前数据库表创建的。假设当前游标指向内存服务连接信息1,表示当前时间,如果需要缓存数据库表,则利用内存服务器连接1,将数据库表缓存至内存服务器1。游标可以每隔12小时移动一格。当游标指向内存服务连接信息1时,表示当前时间,如果需要缓存数据库表,则利用内存服务器连接2,将数据库表缓存至内存服务器2,依次类推。这样可以避免将数据都缓存到一个内存服务器中,合理利用内存服务器池中的内存服务器。[0108]需要说明的是,如果游标所指的内存服务连接信息,所连接的内存服务器的可用内存大小小于数据库表的数据总量大小,则跳过该内存服务连接信息,使得游标指向下一内存服务连接信息。举例来说,在图8中,当前游标指向内存服务连接信息1,表示当前时间,如果需要缓存数据库表,则利用内存服务器连接1,将数据库表缓存至内存服务器1。但是如果数据库表的数据总量大小大于内存服务器1的可用内存大小。则直接使得游标指向内存服务连接信息2,表示将数据库表缓存至内存服务器2。[0109]基于上述实施例的数据缓存方法,本技术提供一种应用程序的数据访问方法,如图9所示的流程图,该方法包括以下步骤:[0110]在步骤s401中,获取用户数据访问请求,其中,所述用户数据访问请求携带有数据库表的标识。[0111]在步骤s402中,从配置文件中调取所述数据库表的标识对应内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息指示所述数据库表与内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;[0112]在步骤s403中,根据所述内存服务连接信息,访问与所述数据库表具有映射关系的所述内存服务器。[0113]具体的,当侦测到应用程序列表页面被打开时,检测电子设备是否存在所述应用程序的本地数据。一般而言,应用程序都需要对用户进行验证,对于需要验证登录的应用程序,用户打开应用程序并成功登录后,接下来,应用程序需要向用户展示默认列表页面,或者用户可以自行选择某一列表页面打开。当电子设备侦测到应用程序的某一个列表页面被打开时,需要加载该页面,此时电子设备需要获取页面数据,首先检测本地存储空间中是否存在该应用程序的本地数据。[0114]从所述终端内存空间划分出本地缓存空间,用于存储所述应用程序的本地数据。具体的,从终端内存空间中划分出一定大小的本地缓存空间用来存储终端上应用程序缓存到本地的本地数据。可以理解的是,在该本地缓存空间中,存储有不只一个应用程序的本地数据。各应用程序与其对应的本地数据的存储位置之间可以通过映射表记录,当需要获取或检测某一应用程序对应的本地数据时,可以从映射表中得到其对应的本地数据的存储位置从而找到该本地数据。[0115]如果不存在该应用程序的本地数据,则通过应用程序接口从内存服务器获取所述应用程序的应用数据。具体的,当终端本地不存在应用程序的本地数据时,则该应用程序可能是首次使用或是用户执行了清空缓存操作,因此,此次显示的数据需要从内存服务器获取,此时终端通过应用程序接口(applicationprogramminginterface,应用程序编程接口,api,简称应用程序接口)向内存服务器提出数据请求并接收内存服务器返回的该应用程序应用数据,该应用数据还可以被保存到本地缓存空间中作为该应用程序的本地数据。[0116]从内存服务器获取应用程序的应用数据,即访问内存服务器中的数据库表。接收到用户数据访问请求后,从配置文件中调取数据库表的标识对应的内存服务连接信息。之后利用内存服务连接信息,访问具有映射关系的内存服务器,读取需要的数据库表。由于配置文件为可实时更改且实时生效的文件,则应用程序在真正访问内存服务器之前,可以动态获取一个内存服务连接信息进行数据访问。实现了内存服务连接信息热加载,即在应用程序运行过程中,动态添加添加一套内存服务连接信息配置并加载到应用程序中。可在不暂停服务、不重启服务的情况下,实现内存服务器热拆分(即将一套内存服务器拆成两套,达到无损业务的扩容),缓解因内存缓存服务迁移或扩容导致的应用程序可用性下降。[0117]在一些实施例中,在从配置文件中调取所述数据库表的标识对应内存服务器连接之前,所述方法还包括:获取所述配置文件的版本号。如果所述配置文件的版本号为最新版本号时,从所述配置文件中调取所述数据库表的标识对应内存服务连接信息。如果所述配置文件的版本号不为最新版本号,则不从所述配置文件中调取所述数据库表的标识对应内存服务连接信息。即如果系统中存在多个配置文件(配置文件实时更改,可能会存在多个版本配置文件共存在情况),只使用最新的配置文件进行数据访问。这样使用的配置文件始终是最新版本的配置文件,减少数据访问失败的情况发生。[0118]本发明提供一种基于配置的动态内存缓存连接创建与访问方法,应用程序基于配置动态创建多套内存缓存服务连接,并在访问时,根据业务场景自动选择正确的内存服务连接信息。第一步,首先在应用程序中配置多套内存服务连接信息,可根据需要增加任何多套配置。第二步,配置每个内存服务连接信息对应的数据库表。第三步,应用程序启动热加载。第四部,根据第一步,应用程序创建多套内存服务连接信息池。第五步,根据第二步,应用程序存储数据库表与内存服务连接信息的映射关系。第六步,应用启动完成。此时应用处于可提供服务状态。第七步,接收用户数据访问请求。第八步,根据用户访问请求确定具体业务场景。第九步,根据业务场景及第五步的映射关系,获取内存服务连接信息。如果存在具有映射关系的内存服务连接信息,则跳转至第十步,使用指定内存服务连接信息访问内存服务器缓存的数据。[0119]在一些实施例中,数据缓存和数据访问可以同时进行。如图10所示的数据缓存和数据访问同时进行的原理图。在将数据库表缓存到内存服务器的过程中,接收到数据访问请求,数据访问请求包括访问数据库表的标识。根据数据库表的标识,判断需要访问的数据是否已经缓存到对应的内存服务器。如果需要访问的数据已经缓存到对应的内存服务器,则在数据缓存的过程中,同时进行数据访问。如果需要访问的数据未缓存到对应的内存服务器,则在数据缓存的过程中,不同时进行数据访问。[0120]图11为本发明用于数据缓存的电子设备的一个实施例的结构示意图,包括:[0121]内存服务创建单元11,用于在配置文件中创建应用程序的数据库表与内存服务器的内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息指示所述数据库表与所述内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;[0122]数据缓存单元12,用于调用所述配置文件中的所述内存服务连接信息,将所述数据库表缓存至与所述数据库表具有映射关系的所述内存服务器。[0123]图12为本发明用于数据访问的电子设备的一个实施例的结构示意图,包括:[0124]请求获取单元21,用于获取用户数据访问请求,其中,所述用户数据访问请求携带有数据库表的标识;[0125]连接调取单元22,用于从配置文件中调取所述数据库表的标识对应内存服务连接信息,其中,所述配置文件为可实时更改且实时生效的文件,所述内存服务连接信息指示所述数据库表与内存服务器的映射关系,所述数据库表与至少一个所述内存服务器具有映射关系;[0126]数据访问单元23,用于根据所述内存服务连接信息,访问与所述数据库表具有映射关系的所述内存服务器。[0127]本领域技术人员可以理解,本技术的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本技术的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为″数据块″、″控制器″、″引擎″、″单元″、″组件″或″系统″。此外,本技术的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。[0128]此外,除非权利要求中明确说明,本技术所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本技术流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本技术实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。[0129]同理,应当注意的是,为了简化本技术披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本技术实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本技术对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献