一种数据缓存初始化方法、移动终端以及计算机可读存储介质与流程

文档序号:13282256阅读:354来源:国知局
本发明涉及移动通信
技术领域
:,尤其涉及一种数据缓存初始化方法、移动终端以及计算机可读存储介质。
背景技术
::随着互联网的发展和终端的普及,终端的用户群越来越大,同时也对软件提出了更多智能,人性化的需求。在现有的技术中,其实终端,虽然被用户作为一个游戏机或电视机,还可能是一个学习机,还可能成为小宝宝的乐园等等,给我们的生活带来更多的乐趣。随着通讯产品的更新换代,移动终端(例如手机、个人数字化助理pda等)已成为人们必备的通讯工具。各种方便人们生活的功能都能在移动终端上实现,例如手机电视、gps、移动支付等等,都需要移动终端接入到互联网才能实现。随着电子产业的快速发展,移动终端智能化程度越来越高。移动终端研发公司也越来越注重智能化,人性化设计。在此移动终端快速发展的背景下,终端的便捷操作和人性化设计成为移动终端不可忽视的一部分。针对在网站系统上,当访问量和并发很大的时候,系统的数据库io往往成为严重的性能瓶颈,一般都可以采用添加数据缓存的方式,来缓解数据库压力。系统的缓存要发挥它的作用,首先就需要做到数据缓存的初始化,即把数据库数据加载到缓存。当前一般采用的缓存初始化方法主要有两种:1、预先初始化全部缓存。服务端程序启动后,随即开始初始化缓存;或者专门运行个程序去初始化。缓存初始化完成后,才开启web服务。2、按需初始化。服务器程序在读取数据前,判断缓存是否存在,如果未缓存,就读取数据库,并初始化缓存;如果已缓存,就直接读取缓存数据。第1种方式,如果数据量较大,初始化缓存需要耗费较长时间,严重影响工作效率。第2种方式,如果系统发生高并发请求,大量的数据读取就会直接访问数据库,这将导致缓存雪崩,系统性能较差。针对相关技术中初始化缓存需要耗费较长时间或者如果系统发生高并发请求,大量的数据读取就会直接访问数据库,将导致缓存雪崩,系统性能较差的问题,目前尚未提出解决方案。技术实现要素:本发明的主要目的在于提出一种数据缓存初始化方法、移动终端以及计算机可读存储介质,旨在解决相关技术中初始化缓存需要耗费较长时间或者如果系统发生高并发请求,大量的数据读取就会直接访问数据库,将导致缓存雪崩,系统性能较差的问题。为实现上述目的,本发明实施例提出一种数据缓存初始化方法,包括:接收读取数据的读取指令,其中,所述读取指令中携带有所述数据的关键key值;根据所述key值判断缓存区域中是否存在所述数据;在判断结果为否的情况下,初始化所述缓存。可选地,所述方法还包括:在判断结果为是的情况下,返回所述数据。可选地,在接收读取数据的读取指令之前,所述方法还包括:数据保存到数据库时,根据所述数据的key值进行散列计算;根据计算的结果创建缓存的分块索引,并保存。可选地,初始化所述缓存包括:根据所述key值进行散列计算,得到所述缓存的分块索引;对所述分块索引进行加锁;初始化相同分块索引缓存的所有线程,同时只允许一个线程运行,使其他线程处于等待状态;执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中。可选地,在执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中之后,所述方法还包括:释放所述分块索引的锁,使所述其他线程恢复运行状态。可选地,根据所述key值进行散列计算包括:采用md5值取模算法根据所述key值进行散列计算。根据本发明实施例的另一方面,还提供了一种移动终端,所述移动终端包括处理器、存储器及通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;所述处理器用于执行存储器中存储的数据缓存初始化程序,以实现以下步骤:接收读取数据的读取指令,其中,所述读取指令中携带有所述数据的关键key值;根据所述key值判断缓存区域中是否存在所述数据;在判断结果为否的情况下,初始化所述缓存。可选地,理器还用于执行数据缓存初始化程序,以实现以下步骤:在判断结果为是的情况下,返回所述数据。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:在接收读取数据的读取指令之前,数据保存到数据库时,根据所述数据的key值进行散列计算;根据计算的结果创建缓存的分块索引,并保存。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:根据所述key值进行散列计算,得到所述缓存的分块索引;对所述分块索引进行加锁;初始化相同分块索引缓存的所有线程,同时只允许一个线程运行,使其他线程处于等待状态;执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:在执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中之后,释放所述分块索引的锁,使所述其他线程恢复运行状态。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:采用md5值取模算法根据所述key值进行散列计算。根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述数据缓存初始化方法的步骤。通过本发明,接收读取数据的读取指令,其中,所述读取指令中携带有所述数据的关键key值;根据所述key值判断缓存区域中是否存在所述数据;在判断结果为否的情况下,初始化所述缓存,解决了相关技术中初始化缓存需要耗费较长时间或者如果系统发生高并发请求,大量的数据读取就会直接访问数据库,将导致缓存雪崩,系统性能较差的问题,通过先从缓存中读取数据,根据key值判断缓存中不存在待读取的数据时,对缓存进行初始化,缩短了缓存的时间,且有效预防缓存雪崩,提升系统性能,提高了用户体验。附图说明图1为实现本发明各个实施例一可选的移动终端的硬件结构示意图;图2为如图1所示的移动终端的无线通信系统示意图;图3是根据本发明实施例的数据缓存初始化方法的流程图;图4是根据本发明实施例的基于key-value键值对的分布式存储的示意图;图5是根据本发明实施例的缓存初始化的流程图;图6是根据本发明实施例的移动终端访问地图的示意图;图7是根据本发明实施例的移动终端进入社交软件聊天的示意图;图8是根据本发明实施例的数据缓存初始化的移动终端的框图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。请参阅图1,其为实现本发明各个实施例的一种移动终端的硬件结构示意图,该移动终端100可以包括:rf(radiofrequency,射频)单元101、wifi模块102、音频输出单元103、a/v(音频/视频)输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、处理器110、以及电源111等部件。本领域技术人员可以理解,图1中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。下面结合图1对移动终端的各个部件进行具体的介绍:射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将基站的下行信息接收后,给处理器110处理;另外,将上行的数据发送给基站。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于gsm(globalsystemofmobilecommunication,全球移动通讯系统)、gprs(generalpacketradioservice,通用分组无线服务)、cdma2000(codedivisionmultipleaccess2000,码分多址2000)、wcdma(widebandcodedivisionmultipleaccess,宽带码分多址)、td-scdma(timedivision-synchronouscodedivisionmultipleaccess,时分同步码分多址)、fdd-lte(frequencydivisionduplexing-longtermevolution,频分双工长期演进)和tdd-lte(timedivisionduplexing-longtermevolution,分时双工长期演进)等。wifi属于短距离无线传输技术,移动终端通过wifi模块102可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图1示出了wifi模块102,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。音频输出单元103可以在移动终端100处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将射频单元101或wifi模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103可以包括扬声器、蜂鸣器等等。a/v输入单元104用于接收音频或视频信号。a/v输入单元104可以包括图形处理器(graphicsprocessingunit,gpu)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或wifi模块102进行发送。麦克风1042可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风1042接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。麦克风1042可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。移动终端100还包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1061的亮度,接近传感器可在移动终端100移动到耳边时,关闭显示面板1061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。显示单元106用于显示由用户输入的信息或提供给用户的信息。显示单元106可包括显示面板1061,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1061。用户输入单元107可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元107可包括触控面板1071以及其他输入设备1072。触控面板1071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1071上或在触控面板1071附近的操作),并根据预先设定的程式驱动相应的连接装置。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,并能接收处理器110发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1071。除了触控面板1071,用户输入单元107还可以包括其他输入设备1072。具体地,其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种,具体此处不做限定。进一步的,触控面板1071可覆盖显示面板1061,当触控面板1071检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板1061上提供相应的视觉输出。虽然在图1中,触控面板1071与显示面板1061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板1071与显示面板1061集成而实现移动终端的输入和输出功能,具体此处不做限定。接口单元108用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元108可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端100和外部装置之间传输数据。存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器109可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器110是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器109内的软件程序和/或模块,以及调用存储在存储器109内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监测。处理器110可包括一个或多个处理单元;优选的,处理器110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。移动终端100还可以包括给各个部件供电的电源111(比如电池),优选的,电源111可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管图1未示出,移动终端100还可以包括蓝牙模块等,在此不再赘述。为了便于理解本发明实施例,下面对本发明的移动终端所基于的通信网络系统进行描述。请参阅图2,图2为本发明实施例提供的一种通信网络系统架构图,该通信网络系统为通用移动通信技术的lte系统,该lte系统包括依次通讯连接的ue(userequipment,用户设备)201,e-utran(evolvedumtsterrestrialradioaccessnetwork,演进式umts陆地无线接入网)202,epc(evolvedpacketcore,演进式分组核心网)203和运营商的ip业务204。具体地,ue201可以是上述终端100,此处不再赘述。e-utran202包括enodeb2021和其它enodeb2022等。其中,enodeb2021可以通过回程(backhaul)(例如x2接口)与其它enodeb2022连接,enodeb2021连接到epc203,enodeb2021可以提供ue201到epc203的接入。epc203可以包括mme(mobilitymanagemententity,移动性管理实体)2031,hss(homesubscriberserver,归属用户服务器)2032,其它mme2033,sgw(servinggateway,服务网关)2034,pgw(pdngateway,分组数据网络网关)2035和pcrf(policyandchargingrulesfunction,政策和资费功能实体)2036等。其中,mme2031是处理ue201和epc203之间信令的控制节点,提供承载和连接管理。hss2032用于提供一些寄存器来管理诸如归属位置寄存器(图中未示)之类的功能,并且保存有一些有关服务特征、数据速率等用户专用的信息。所有用户数据都可以通过sgw2034进行发送,pgw2035可以提供ue201的ip地址分配以及其它功能,pcrf2036是业务数据流和ip承载资源的策略与计费控制策略决策点,它为策略与计费执行功能单元(图中未示)选择及提供可用的策略和计费控制决策。ip业务204可以包括因特网、内联网、ims(ipmultimediasubsystem,ip多媒体子系统)或其它ip业务等。虽然上述以lte系统为例进行了介绍,但本领域技术人员应当知晓,本发明不仅仅适用于lte系统,也可以适用于其他无线通信系统,例如gsm、cdma2000、wcdma、td-scdma以及未来新的网络系统等,此处不做限定。基于上述移动终端硬件结构以及通信网络系统,提出本发明方法各个实施例。实施例1基于上述的移动终端,本发明实施例提供了一种数据缓存初始化方法,图3是根据本发明实施例的数据缓存初始化方法的流程图,如图3所示,该方法包括以下步骤:步骤s301,接收读取数据的读取指令,其中,所述读取指令中携带有所述数据的关键key值;步骤s302,根据所述key值判断缓存区域中是否存在所述数据;步骤s303,在判断结果为否的情况下,初始化所述缓存。通过上述步骤,通过先从缓存中读取数据,根据key值判断缓存中不存在待读取的数据时,对缓存进行初始化,解决了相关技术中初始化缓存需要耗费较长时间或者如果系统发生高并发请求,大量的数据读取就会直接访问数据库,将导致缓存雪崩,系统性能较差的问题,缩短了缓存的时间,且有效预防缓存雪崩,提升系统性能,提高了用户体验。如果根据所述key值判断缓存区域中存在所述数据,便可直接返回数据,即在判断结果为是的情况下,返回所述数据。在接收读取数据的读取指令之前,数据保存到数据库时,根据所述数据的key值进行散列计算,根据计算的结果创建缓存的分块索引,并保存。根据所述key值进行散列计算,得到所述缓存的分块索引;对所述分块索引进行加锁;初始化相同分块索引缓存的所有线程,同时只允许一个线程运行,使其他线程处于等待状态;执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中。本发明实施例中,数据缓存主要指目前比较常用的非关系型内存数据库,存储形式主要为键值对(key-value),其中,k关键字是数据库的字段。图4是根据本发明实施例的基于key-value键值对的分布式存储的示意图,如图4所示,基于key-value键值对的分布式存储方法,包括操作接收层,缓存查找层和操作处理层,所述操作接收层接收客户端通过网络发来的读写操作,将客户端的多个操作组成一个transaction事务,然后统一下发,确保数据的强一致性;所述缓存查找层会响应上一节提到的transaction事务,解析之后进行执行,根据其中的key值到系统在内存中的缓存区域进行查询,若在缓存中发现,则根据操作类型进行下一步操作;所述操作处理层接收缓存中未处理的事务的操作,视操作类型而定。当前为读操作时,所述操作接收层指定数据大小和偏移,此时,系统会根据之前写入的属性信息获取对应数据的对象id;当前为写操作时,所述操作接收层指定待写入数据,操作接收层负责计算数据对象id;在得到数据的对象id之后,再根据特定的算法拼接出key值,以便后续调用。当前为读操作时,所述缓存查找层直接获取其value值返回给客户端;当前为写操作且为覆盖写时,所述缓存查找层对value值进行更新,暂存为脏数据,等待刷新到磁盘中;未在缓存中发现时,则进入具体操作的流程。当前为读操作时,所述操作处理层按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,该遍历过程是对底层维护的key值位图表格进行的,若能找到,则提取其value值,依次向上反馈数据,若没有找到,则返回错误码,完成读操作;当前为写操作时,所述操作处理层先按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,若发现key值已存在,则将该条key-value删除,若无,则直接进行以下的写入操作。先对数据进行切片,建立key值到value值的映射关系组成key-value键值对追加到底层维护的键值对列表记录中,同时,将数据的属性信息也按照这种方式予以追加,并返回操作码,至此,完成一次写操作。所述层级顺序为底层在保存键值对时,按照先后顺序或者优先级加以分层得到的顺序。该基于key-value键值对的分布式存储方法,包括操作接收层,缓存查找层和操作处理层,所述操作接收层接收客户端通过网络发来的读写操作,将客户端的多个操作组成一个transaction事务,然后统一下发,确保数据的强一致性;所述缓存查找层会响应上一节提到的transaction事务,解析之后进行执行,根据其中的key值到系统在内存中的缓存区域进行查询,若在缓存中发现,则根据操作类型进行下一步操作;所述操作处理层接收缓存中未处理的事务的操作,视操作类型而定。当前为读操作时,所述操作接收层指定数据大小和偏移,此时,系统会根据之前写入的属性信息获取对应数据的对象id;当前为写操作时,所述操作接收层指定待写入数据,操作接收层负责计算数据对象id;在得到数据的对象id之后,再根据特定的算法拼接出key值,以便后续调用。当前为读操作时,所述缓存查找层直接获取其value值返回给客户端;当前为写操作且为覆盖写时,所述缓存查找层对value值进行更新,暂存为脏数据,等待刷新到磁盘中;未在缓存中发现时,则进入具体操作的流程。当前为读操作时,所述操作处理层按照层级顺序(底层在保存键值对的时候会按照先后顺序或者优先级等特征加以分层)遍历磁盘中与目标key值相吻合的key-value键值对,该遍历过程是对底层维护的key值位图表格进行的(下文中的写操作同理),若能找到,则提取其value值,依次向上反馈数据,若没有找到,则返回错误码,完成读操作;当前为写操作时,所述操作处理层先按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,若发现key值已存在,则将该条key-value删除,若无,则直接进行以下的写入操作。先对数据进行切片,建立key值到value值的映射关系组成key-value键值对追加到底层维护的键值对列表记录中,同时,将数据的属性信息也按照这种方式予以追加,并返回操作码,至此,完成一次写操作。基于key-value键值对的分布式存储方法,修改底层存储为key-value键值对的模式,使得整个存储集群对小文件的处理更加迅速、高效,避免了传统分布式存储或者本地存储模式中伴随小文件随机写入的频繁寻址所引发的io损耗,大大提高该场景下的存储效率。图5是根据本发明实施例的缓存初始化的流程图,如图5所示,具体包括:步骤s501,读取缓存;步骤s502,判断缓存中是否存在待读取的数据,在判断结果为否的情况下,执行步骤s503,在判断结果为是的情况下,执行步骤s508;步骤s503,计算分块索引;步骤s504,加锁;步骤s505,初始化该分块索引下的全部缓存;步骤s506,释放锁;步骤s507,读取缓存;步骤s508,返回数据。相关数据保存到数据库时,同时根据关键字key进行散列计算,创建缓存的分块索引,并保存。这里的关键字key的散列计算生成分块索引,一般可采用md5值取模算法,保障分块的平均分布。生成的索引以数字的形式。分块的数据个数可通过调整算法中取模参数来改变,具体使用时根据服务器性能相应调整。程序读取数据时,根据关键字key,从缓存读取数据,如果存在,就返回缓存数据;如果缓存中不存在,则去初始化这个数据缓存。程序初始化缓存时,根据key进行散列计算出分块索引。然后程序对分块索引加锁。需要初始化相同分块缓存的所有线程,同时只允许一个运行,其他线程等待。key的散列计算方法与特点1一致,保证相同的key经过这个算法计算生成的分块索引是一致的。这个分块索引加锁可以是信号量,在多线程程序中,保证同个分块缓存的初始化只会有一个执行线程。分块索引是这个锁的唯一标志。执行初始化缓存的线程从数据库中读取这个分块索引下的所有数据,初始化到缓存。完成后,释放分块索引的锁。缓存初始化完成后,在程序运行期内,已经不需要再次初始化。分块索引的锁释放时,锁的信号量可以释放的足够多,让所有等待线程恢复运行。程序再读取缓存数据,并返回。可选地,在执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中之后,释放所述分块索引的锁,使所述其他线程恢复运行状态。锁释放时,锁的信号量可以释放的足够多,让所有等待线程恢复运行。可选地,根据所述key值进行散列计算可以包括:采用md5值取模算法根据所述key值进行散列计算。对于海量数据,在初始化加载读取的时候一般都会遇到初始化加载速度太慢的问题,本发明实施例通过对原始数据进行索引存储,充分利用缓存数据库的存储能力,在初始化的时候先从内存数据库中读取需要加载的数据,减少从物理数据库中读取数据的次数和数量,从而加快数据初始化的速度。例如,图6是根据本发明实施例的移动终端访问地图的示意图,如图6所示,海量地图数据的初始化加速方法在传统的技术中主要体现在通过提高硬件的配置指标来加快数据的读取速度。图7是根据本发明实施例的移动终端进入社交软件聊天的示意图,如图7所示,海量的通信数据的初始化加速方法在传统的技术中主要体现在通过提高硬件的配置指标来加快数据的读取速度。现有基于键值对缓存的数据读写方法,采用主从结构的缓存器,主缓存器向客户端提供数据读写业务服务,从缓存器作为主缓存器失效时的备份缓存器,不能为客户端提供数据读写业务服务,使得主缓存器负载较重、数据读写效率较低。实际应用中,考虑到从缓存器按照预先设置的同步周期与主缓存器进行数据同步,可以使得从缓存器中缓存的数据与主缓存器缓存的数据一致。因而,本发明实施例中,设置服务管理器,对客户端请求的服务进行区分,当客户端请求的服务为读数据时,可以通过从缓存服务器向客户端提供读数据的服务,分担主缓存器负载,从而降低主缓存器负载,降低主缓存器发生拥堵的概率,提升主缓存器的数据读写效率。本发明实施例基于键值对缓存的数据进行读写,为了进一步提高读写的效率,提高缓存的缓存能力,可以设置主缓存器和从缓存器,其中,主缓存器与主服务管理器的数量为一个,从缓存器的数量为一个或多个。主缓存器,用于以键值对的方式缓存数据,接收主服务管理器输出的数据读写请求,进行数据读写,并将读写的数据携带在数据读写请求响应中,输出至主服务管理器;在发生故障并排除故障启动后,切换为从缓存器;从缓存器,用于以键值对的方式缓存数据,根据预先设置的同步周期,从主缓存器获取同步更新的数据;接收主服务管理器输出的数据读请求,读取数据,并将读取的数据携带在数据读请求响应中,输出至主服务管理器;接收主服务管理器输出的属性变更指令,根据所述属性变更指令切换为主缓存器;本发明实施例中,主缓存器与从缓存器之间可以进行属性变更,即主缓存器可以变更为从缓存器,从缓存器可以变更为主缓存器。从缓存器在将自身切换为主缓存器后,执行主缓存器的功能,向客户端提供读写数据服务。而主缓存器在将自身切换为从缓存器后,执行从缓存器的功能,向客户端提供读数据服务,并根据预先设置的同步周期,从主缓存器获取同步更新的数据。主服务管理器,用于监测主缓存器和从缓存器的状态,在监测到主缓存器发生故障后,根据预先设置的负载策略,从管理的从缓存器中,选取符合负载策略的一个从缓存器,并向该从缓存器发送属性变更指令,向其他从缓存器发送包含该从缓存器信息的同步更新指令,以使接收同步更新指令的从缓存器向指令中的从缓存器获取同步更新的数据;接收客户端发送的数据请求,如果为数据读请求,根据预先设置的负载策略,选取符合负载策略的一个从缓存器,将数据读请求输出至该从缓存器,如果为数据读写请求或数据写请求,将数据读写请求输出至主缓存器。本发明实施例中,主服务管理器在接收到数据读写请求响应或数据读请求响应后,转发至相应的客户端。负载策略可以是负载最轻策略,也可以是随机选择策略,还可以是轮询策略,通过轮询选择从缓存器为客户端提供数据服务。实际应用中,主服务管理器识别数据请求是数据读请求还是数据读写请求,或是数据写请求,可以通过客户端在发送数据请求时,携带读写标识进行识别。例如,如果数据读写标识为0,表示进行数据读操作,如果数据读写标识为1,表示进行数据写操作,如果数据读写标识为2,表示既进行数据读操作,也进行数据写操作。当然,实际应用中,也可以根据kv缓存的操作命令区分读写操作,具体来说,kv缓存的操作命令包括:设置(set)命令、获取(get)命令、更新(update)命令以及删除(delete)命令。其中,set命令、update命令以及delete命令属于写命令,包含有写命令的数据请求将路由到主缓存器;get命令属于读命令,包含有读命令的数据请求将路由到从缓存器。较佳地,主服务管理器将监测得到的主缓存器和从缓存器的状态存储在预先设置的运行状态列表中,其中,缓存器运行状态的改变与缓存器属性以及负载相关,因而,运行状态列表中,包括缓存器的属性(主缓存器还是从缓存器)、缓存器状态(正常运行还是发生故障)以及缓存器当前的负载量。这样,在向从缓存器发送属性变更指令后,将该从缓存器的属性变更为主缓存器,同时,将失效缓存器的属性变更为从缓存器,将失效缓存器的状态变更为发生故障。使得主服务管理器可以将接收的客户端的数据请求进行处理后,转发到相应的缓存器。实际应用中,主服务管理器还可以作为从缓存器使用。较佳地,在监测到主缓存器发生故障后,主服务管理器不参与属性变更指令对应的从缓存器的选取,在接收客户端发送的数据请求、且为数据读请求后,作为参与读数据请求处理的从缓存器,如果自身符合负载策略,则直接读取数据后,将读取的数据携带在数据读请求响应中,输出至数据读请求对应的客户端。当然,实际应用中,主服务管理器在主缓存器发生故障后,还可以进一步用于远程拉起发生故障的主缓存器,并在发生故障的主缓存器启动后,将运行状态列表中该缓存器的运行状态更新为正常运行。其中,远程拉起即进行远程控制,通过计算机网络异地接入因特网,连通被控制的主缓存器,将被控主缓存器的桌面环境显示到主服务管理器上,通过主服务管理器对异地的发生故障的主缓存器进行配置、软件安装程序、修改等,以排除发生故障的主缓存器的故障,并通过远程唤醒方式启动排除故障的主缓存器。本发明实施例中,通过设置主服务管理器,对主缓存器以及从缓存器的运行状态进行监测,并对客户端发送的数据请求进行区分,将数据读请求输出至从缓存器进行处理,有效降低了主缓存器的负载,使主缓存器与从缓存器的负载较为均衡,降低了主缓存器的拥堵,使得主缓存器数据读写效率得以提升。进一步地,在主缓存器发生故障失效时,通过主服务管理器对客户端发送的数据请求进行处理,无需向智能电视系统中的各客户端发送服务地址更新信息,减少了传输服务地址更新信息所需的资源开销,提升了资源的利用率;而且,在主缓存器发生故障失效时,客户端无需进行更新设置,只需维持与主服务管理器的连接即可,实现流程简单,与主服务管理器的连接为透明连接。实际应用中,为了避免主服务管理器发生故障时导致的数据传输中断,该装置还可以进一步包括:从服务管理器,用于按照预先设置的状态更新周期,与主服务管理器运行状态列表同步;监测主服务管理器的状态,在监测到主服务管理器发生故障后,接管主服务管理器。本发明实施例中,从服务管理器作为主服务管理器的备份,在主服务管理器发生故障不可用后,接管主服务管理器,与主缓存器以及从缓存器进行通信,向客户端提供服务。同时,试图拉起发生故障的主服务管理器,发生故障的主服务管理器启动后,将自身设置为从服务管理器,按照预先设置的状态更新周期,与主服务管理器运行状态列表同步,并监测当前运行的主服务管理器的状态。本发明实施例中,缓存器的配置采用一主多从的方法,从缓存器只能读不能写,主缓存器可读写,从缓存器按照预先设置的同步周期,主动与主缓存器同步数据,从主缓存器获取同步数据。这样,可以保持主从缓存器中数据的一致性。实际应用中,还可以在主服务管理器以及从服务管理器中设置第一端口和第二端口,分别用于转发客户端的数据请求。例如,如果确定数据请求为数据读写请求或数据写请求,则主服务管理器查找维护的运行状态列表,获取主缓存器,将数据读写请求或数据写请求通过第一端口发送至主缓存器,并将该客户端连接到主缓存器。这样,主服务管理器将负责客户端和主缓存器之间的数据读写转发。如果确定数据请求为数据读请求,则主服务管理器查找维护的运行状态列表,选取负载最轻的从缓存器(在主服务管理器作为从缓存器使用的情况下,包括主服务管理器),将数据读请求通过第二端口发送至该选取的从缓存器,并将发送数据读请求的客户端连接到选取的从缓存器。这样,主服务管理器将负责客户端与从缓存器之间的读数据转发。本发明实施例中,主缓存器通过第一端口与主服务管理器相连,从缓存器通过第二端口与主服务管理器相连。当然,实际应用中,不同的从缓存器可以使用同一个第二端口,也可以分别设置不同的端口与主服务管理器相连。本发明实施例中,主服务管理器监控各缓存器(主缓存器以及从缓存器)的运行状况,维护主从缓存器的运行状态列表,从服务管理器按照预先设置的状态更新周期,同步备份主服务管理器维护的主从缓存器的运行状态列表。具体来说,当主服务管理器监测到从缓存器宕机(发生故障失效)时,则将该从缓存器运行的数据读服务切换至其它从缓存器,并从运行状态列表中删除,即将该从缓存从正常运行变更为发生故障,并试图通过远程重新拉起宕机的从缓存器。当从缓存器被拉起后,将从缓存器加入运行状态列表中,即将该从缓存从发生故障变更为正常运行。当主服务管理器监测到主缓存器宕机时,则将负载量最轻的从缓存器设置为主缓存器,并将主缓存器发生变化的信息以及该从缓存器信息,携带在同步更新指令中,通知其它的从缓存器,触发通知的从缓存器向新的主缓存器同步数据。同时,通过远程重新拉起宕机的主缓存器。当主服务管理器远程拉起宕机的主缓存器后,将拉起的主缓存器切换为从缓存器。这样,由于主从缓存器中的数据是同步的,在主缓存器宕机而从缓存器切换为主缓存器的过程中,该从缓存器缓存的数据也是一套完整的数据,因此不会造成业务中断和数据丢失。实施例2根据本发明实施例的另一方面,还提供了一种移动终端,图8是根据本发明实施例的数据缓存初始化的移动终端的框图,如图8所示,所述移动终端包括处理器、存储器及通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;所述处理器用于执行存储器中存储的数据缓存初始化程序,以实现以下步骤:接收读取数据的读取指令,其中,所述读取指令中携带有所述数据的关键key值;根据所述key值判断缓存区域中是否存在所述数据;在判断结果为否的情况下,初始化所述缓存。可选地,理器还用于执行数据缓存初始化程序,以实现以下步骤:在判断结果为是的情况下,返回所述数据。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:在接收读取数据的读取指令之前,数据保存到数据库时,根据所述数据的key值进行散列计算;根据计算的结果创建缓存的分块索引,并保存。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:根据所述key值进行散列计算,得到所述缓存的分块索引;对所述分块索引进行加锁;初始化相同分块索引缓存的所有线程,同时只允许一个线程运行,使其他线程处于等待状态;执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:在执行初始化缓存的线程从所述数据库中读取所述分块索引下的所有数据,将所述所有数据加载到所述缓存中之后,释放所述分块索引的锁,使所述其他线程恢复运行状态。可选地,所述处理器还用于执行数据缓存初始化程序,以实现以下步骤:采用md5值取模算法根据所述key值进行散列计算。实施例3根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述数据缓存初始化方法的步骤。本发明实施例,接收读取数据的读取指令,其中,所述读取指令中携带有所述数据的关键key值;根据所述key值判断缓存区域中是否存在所述数据;在判断结果为否的情况下,初始化所述缓存,解决了相关技术中初始化缓存需要耗费较长时间或者如果系统发生高并发请求,大量的数据读取就会直接访问数据库,将导致缓存雪崩,系统性能较差的问题,通过先从缓存中读取数据,根据key值判断缓存中不存在待读取的数据时,对缓存进行初始化,缩短了缓存的时间,且有效预防缓存雪崩,提升系统性能,提高了用户体验。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1