一种数据的查询方法和装置
技术领域
本申请涉及计算机领域,尤其涉及一种数据的查询方法和装置。
背景技术
电子商务的商品系统提供查询服务接口,其使用的单一缓存均存在一定缺陷。
目前的处理方式是将数据库中的全量数据保存在机器本地的内存中,所有的查询服务都是在机器本地的内存中进行查询,如果内存中存在就返回查询到的数据,不存在就直接返回错误。
在实现本发明过程中,发明人发现这个方案的缺陷是内存占用率很高,尤其是随着时间的推移,数据逐步增多,会导致需要不断增加内存才能满足。每一次的数据查询均需要在全量数据中进行操作,随着数据量的增加,数据的查询效率会越来越低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种数据的查询方法和装置,以至少解决相关技术中数据查询效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种数据的查询方法,包括:
接收数据查询请求,其中,所述数据查询请求用于请求查询存储系统中的目标数据;
从所述存储系统的内存模块中查询所述目标数据,其中,所述存储系统包括:所述内存模块,缓存模块和数据库模块,所述缓存模块用于缓存所述数据库模块中存储的数据,所述内存模块用于存储所述缓存模块缓存的数据中具有预设数据特征的数据;
在从所述存储系统的内存模块中查询到所述目标数据的情况下,发送所述内存模块中存储的所述目标数据。
可选地,在从所述存储系统的内存模块中查询所述目标数据之后,所述方法还包括:
在从所述存储系统的内存模块中未查询到所述目标数据的情况下,从所述存储系统的缓存模块查询所述目标数据;
在从所述存储系统的缓存模块中查询到所述目标数据的情况下,发送所述缓存模块中存储的所述目标数据。
可选地,在从所述存储系统的缓存模块查询所述目标数据之后,所述方法还包括:
在从所述存储系统的缓存模块中查询到所述目标数据的情况下,确定所述目标数据是否具有所述预设数据特征;
在确定所述目标数据具有所述预设数据特征的情况下,将所述目标数据存储到所述内存模块中。
可选地,在从所述存储系统的缓存模块查询所述目标数据之后,所述方法还包括:
在从所述存储系统的缓存模块中未查询到所述目标数据的情况下,从所述存储系统的数据库模块查询所述目标数据;
在从所述存储系统的数据库模块中查询到所述目标数据的情况下,将所述数据库模块中存储的所述目标数据发送至所述客户端;
将所述数据库模块中存储的所述目标数据存储到所述缓存模块中。
可选地,在接收客户端发送的数据查询请求之前,所述方法还包括:
建立所述存储系统中的所述内存模块,所述缓存模块和所述数据库模块;
获取所述客户端对应的目标应用的应用数据;
将所述应用数据存储到所述缓存模块和所述数据库模块中,并确定所述预设数据特征包括:数据访问频率高于目标频率,或者,数据量低于目标数据量。
可选地,在将所述应用数据存储到所述缓存模块和所述数据库模块中,并将所述应用数据中具有所述预设数据特征的数据存储到所述内存模块中之后,所述方法还包括:
接收所述目标应用发送的数据更新信息;
按照所述数据更新信息的指示对所述缓存模块和所述数据库模块中存储的数据进行更新,并删除所述内存模块中存储的数据。
可选地,在将所述应用数据存储到所述缓存模块和所述数据库模块中,并将所述应用数据中具有所述预设数据特征的数据存储到所述内存模块中之后,所述方法还包括:
每隔目标时间间隔检查所述内存模块中存储的数据的第一数据标识与所述缓存模块中存储的数据的第二数据标识是否一致;
在检查所述第一数据标识与所述第二数据标识不一致的情况下,删除所述内存模块中存储的数据。
根据本申请实施例的另一方面,还提供了一种数据的查询装置,包括:
第一接收模块,用于接收数据查询请求,其中,所述数据查询请求用于请求查询存储系统中的目标数据;
第一查询模块,用于从所述存储系统的内存模块中查询所述目标数据,其中,所述存储系统包括:所述内存模块,缓存模块和数据库模块,所述缓存模块用于缓存所述数据库模块中存储的数据,所述内存模块用于存储所述缓存模块缓存的数据中具有预设数据特征的数据;
第一发送模块,用于在从所述存储系统的内存模块中查询到所述目标数据的情况下,发送所述内存模块中存储的所述目标数据。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,采用接收数据查询请求,其中,数据查询请求用于请求查询存储系统中的目标数据;从存储系统的内存模块中查询目标数据,其中,存储系统包括:内存模块,缓存模块和数据库模块,缓存模块用于缓存数据库模块中存储的数据,内存模块用于存储缓存模块缓存的数据中具有预设数据特征的数据;在从存储系统的内存模块中查询到目标数据的情况下,发送内存模块中存储的目标数据的方式,存储系统包括:内存模块,缓存模块和数据库模块,缓存模块用于缓存数据库模块中存储的数据,内存模块用于存储缓存模块缓存的数据中具有预设数据特征的数据,这样将数据库模块中的数据通过二级缓存的机制存储到缓存模块和内存模块中,在接收到数据查询请求时,优先查询内存模块,如果目标数据是具有预设数据特征的,那么在内存模块中就可能会命中目标数据,如果命中,则返回内存模块中存储的目标数据,通过上述这种二级缓存机制,达到了快速命中数据的目的,从而实现了提高数据查询效率的技术效果,进而解决了相关技术中数据查询效率较低的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的数据的查询方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的数据的查询方法的流程图;
图3是根据本申请实施例的各种存储系统的存储架构比对的示意图;
图4是根据本申请可选实施例的一种二级缓存热点数据的流程的示意图;
图5是根据本申请实施例的一种可选的数据的查询装置的示意图;
以及
图6是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种数据的查询的方法实施例。
可选地,在本实施例中,上述数据的查询方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。本申请实施例的数据的查询方法可以由服务器103来执行,也可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本申请实施例的数据的查询方法也可以是由安装在其上的客户端来执行。
图2是根据本申请实施例的一种可选的数据的查询方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,接收数据查询请求,其中,所述数据查询请求用于请求查询存储系统中的目标数据;
步骤S204,从所述存储系统的内存模块中查询所述目标数据,其中,所述存储系统包括:所述内存模块,缓存模块和数据库模块,所述缓存模块用于缓存所述数据库模块中存储的数据,所述内存模块用于存储所述缓存模块缓存的数据中具有预设数据特征的数据;
步骤S206,在从所述存储系统的内存模块中查询到所述目标数据的情况下,发送所述内存模块中存储的所述目标数据。
通过上述步骤S202至步骤S206,存储系统包括:内存模块,缓存模块和数据库模块,缓存模块用于缓存数据库模块中存储的数据,内存模块用于存储缓存模块缓存的数据中具有预设数据特征的数据,这样将数据库模块中的数据通过二级缓存的机制存储到缓存模块和内存模块中,在接收到数据查询请求时,优先查询内存模块,如果目标数据是具有预设数据特征的,那么在内存模块中就可能会命中目标数据,如果命中,则返回内存模块中存储的目标数据,通过上述这种二级缓存机制,达到了快速命中数据的目的,从而实现了提高数据查询效率的技术效果,进而解决了相关技术中数据查询效率较低的技术问题。
在步骤S202提供的技术方案中,数据查询请求可以但不限于是由客户端发送的,也可以是服务器发送的,客户端可以但不限于包括各种功能应用的客户端,比如:在线教育应用、即时通讯应用、社区空间应用、游戏应用、购物应用、浏览器应用、金融应用、多媒体应用、直播应用等。
可选地,在本实施例中,数据查询请求用于请求查询存储系统中的目标数据,目标数据可以但不限于包括商品信息、音视频文件、聊天记录、交易信息等等。
在步骤S204提供的技术方案中,存储系统包括:内存模块,缓存模块和数据库模块,缓存模块用于缓存数据库模块中存储的数据,内存模块用于存储缓存模块缓存的数据中具有预设数据特征的数据。缓存模块中缓存数据库中的全量数据,并将缓存模块缓存的数据中具有预设数据特征的数据存储在内存模块中,当接收到数据查询请求时,首先在内存模块存储的具有预设数据特征的数据中查询,如果命中则可以直接返回。
可选地,在本实施例中,预设数据特征可以但不限于用于表示数据的属性特征,比如:数据量、数据访问频率、数据的敏感度等等。
在步骤S206提供的技术方案中,如果内存模块中命中了目标数据,则可以直接返回。
在一个可选的实施方式中,提供了一种存储系统的存储架构,图3是根据本申请实施例的各种存储系统的存储架构比对的示意图,如图3所示,存储系统(a)的架构只使用DB(数据库模块),这种方案的缺点是DB的压力会很大,性能也很差。存储系统(b)的架构使用了内存模块(cacha)和数据库模块(DB),它的缺点就是内存压力大,还有就是对ZK的强依赖。现有技术中使用存储系统(a)和存储系统(b)进行数据存储,数据的查询效率都比较低。
在本可选的实施方式中提供了存储系统(c)的架构,该存储系统架构是读写分离的,把一个单应用产品的读写拆分成读和写两个应用,之间的同步是通过ZK做zookeeper和定时任务(QUARTZ)来保证同步。这样带来的优点是解耦的高可用,第二个是缓存的高性能。
存储系统(a)和存储系统(b)本均采用单一应用处理系统内外部读写逻辑,存储系统(c)中将写应用(数据库模块(DB))与读应用(内存模块+缓存模块(cache+R2M))分开,DB服务处理管理后台(console)的读写操作和cache+R2M应用的读请求(即系统内部读写请求),cache+R2M服务统一处理外部应用(web)的读请求,本次读写分离中的读主要指外部应用的读请求。
作为一种可选的实施例,在从所述存储系统的内存模块中查询所述目标数据之后,还包括:
S1,在从所述存储系统的内存模块中未查询到所述目标数据的情况下,从所述存储系统的缓存模块查询所述目标数据;
S2,在从所述存储系统的缓存模块中查询到所述目标数据的情况下,发送所述缓存模块中存储的所述目标数据。
可选地,在本实施例中,如果内存模块中没有命中目标数据,则从缓存模块中进行查询,如果缓存模块中查到目标数据,则返回缓存模块中存储的目标数据。
作为一种可选的实施例,在从所述存储系统的缓存模块查询所述目标数据之后,还包括:
S1,在从所述存储系统的缓存模块中查询到所述目标数据的情况下,确定所述目标数据是否具有所述预设数据特征;
S2,在确定所述目标数据具有所述预设数据特征的情况下,将所述目标数据存储到所述内存模块中。
可选地,在本实施例中,如果在缓存模块查到了目标数据,则确定该目标数据是否适合存储在内存中,即目标数据是否具有预设数据特征。如果目标数据具有预设数据特征,则将其添加到内存中,那么在后续的查询中则可以直接在内存中命中该目标数据,提高查询的效率。
作为一种可选的实施例,在从所述存储系统的缓存模块查询所述目标数据之后,还包括:
S1,在从所述存储系统的缓存模块中未查询到所述目标数据的情况下,从所述存储系统的数据库模块查询所述目标数据;
S2,在从所述存储系统的数据库模块中查询到所述目标数据的情况下,将所述数据库模块中存储的所述目标数据发送至所述客户端;
S3,将所述数据库模块中存储的所述目标数据存储到所述缓存模块中。
可选地,在本实施例中,如果缓存中也没有查询到目标数据,则查找数据库,并将数据库中查找到的目标数据缓存到缓存模块中。
作为一种可选的实施例,在接收客户端发送的数据查询请求之前,还包括:
S1,建立所述存储系统中的所述内存模块,所述缓存模块和所述数据库模块;
S2,获取所述客户端对应的目标应用的应用数据;
S3,将所述应用数据存储到所述缓存模块和所述数据库模块中,并确定所述预设数据特征包括:数据访问频率高于目标频率,或者,数据量低于目标数据量。
可选地,在本实施例中,内存模块可以但不限于用于存储热点数据,缓存模块存储全量数据。在设置缓存策略时,先划分好热点与非热点数据,热点数据可以但不限于定义为:频繁访问(如产品、责任、条款),非大容量字段(如全国地区码表、费率表等为大容量字段)。在系统开发阶段,针对业务表会设置缓存块,如果业务表为热点数据,则进行二级缓存处理(内存+缓存),非热点数据则只进行一级缓存(即只走缓存、不走内存)处理,节省内存空间。这里热点数据的判断可以不是系统动态判断,而是开发时提前设置好的。
采用这种高频热点数据二级缓存,低频、大数据一级缓存的热点缓存机制,二级缓存可提升服务高并发高可用能力,热点缓存可提升内存利用率,优先保证热点数据的高效并发。
作为一种可选的实施例,在将所述应用数据存储到所述缓存模块和所述数据库模块中,并将所述应用数据中具有所述预设数据特征的数据存储到所述内存模块中之后,还包括:
S1,接收所述目标应用发送的数据更新信息;
S2,按照所述数据更新信息的指示对所述缓存模块和所述数据库模块中存储的数据进行更新,并删除所述内存模块中存储的数据。
可选地,在本实施例中,如果接收到数据更新信息,则同步更新缓存模块和数据库,并清空内存。后续接收到数据查询请求时,内存模块中查不到数据,则在缓存模块中进行查询,并将具有预设数据特征的数据存储到内存模块中,从而保证了数据的一致性,实现了数据的同步更新。
在上述可选的实施方式中提供了数据实时同步过程,写数据成功后(数据写入数据库,再将数据与数据版本写入R2M缓存),写应用(base)通过Zookeeper分布式服务中间件的广播通知机制,将更新节点(如产品)写入ZK配置,通知读应用(cache)各实例监听广播通知,根据通知节点删除各实例下的内存数据(如产品),保证数据强一致性。
作为一种可选的实施例,在将所述应用数据存储到所述缓存模块和所述数据库模块中,并将所述应用数据中具有所述预设数据特征的数据存储到所述内存模块中之后,还包括:
S1,每隔目标时间间隔检查所述内存模块中存储的数据的第一数据标识与所述缓存模块中存储的数据的第二数据标识是否一致;
S2,在检查所述第一数据标识与所述第二数据标识不一致的情况下,删除所述内存模块中存储的数据。
可选地,在本实施例中,目标时间间隔可以是预先设置的,也可以是根据数据的历史处理信息进行动态调整的。
可选地,在本实施例中,每隔目标时间间隔查询内存和缓存中存储的数据的数据标识是否一致,并对不一致的情况进行处理,保证了数据的一致性,实现了数据的定是同步。
可选地,在本实施例中,上述数据标识用于对数据的版本进行唯一标识,可以但不限于使用版本号作为上述数据标识。
在上述可选的实施方式中提供了数据定时同步过程,每间隔半小时(时间可自定义)轮询读应用(cache)各缓存块存入内存的数据版本与存入缓存(R2M)的数据版本是否一致,不一致则认为内存数据为未更新的旧数据,将该内存数据删除。定时同步可以防止ZK同步异常或其他原因造成的数据不一致,从而保证一定时间范围的数据一致性。
本申请还提供了一种可选实施例,该可选实施例提供一种二级缓存热点数据的处理流程,图4是根据本申请可选实施例的一种二级缓存热点数据的流程的示意图,如图4所示,可以看到产品查询的时候,查询顺序可以是内存模块(例如使用cache存储热点数据[hot])、缓存模块(例如可以使用Redis,即R2M)、数据库模块(例如使用MongoDB,可以通过MySQL进行备份),当产品更新(UPDATE)的时候会去刷新缓存模块(R2M),然后同时删除(DEL)内存模块(cache)中的数据,并通过版本检查任务,定时去检查(CHECK)缓存模块和内存模块的数据是否一致,如果不一致则清空内存模块,保证数据一致性。数据更新的时候,都会保证把更新后的数据刷到缓存模块里面去,但是内存模块通过ZK去通知,进行删除(DEL)操作。
上述的二级缓存机制的过程为:内存——缓存——DB。本可选实施例中,把缓存模块和内存模块同时引用进来,做了一个二级的热点数据缓存,二级缓存的查询方案可以是:将部分热点数据存储在内存模块、全量数据存储在缓存模块,然后DB数据库模块作为一个备用查询方式,查询的顺序是首先查内存模块,如果内存模块存在查询的数据就直接返回,不存在就查缓存模块,如果是热点数据,则在查完缓存模块后把缓存模块的数据写进内存模块;如果缓存模块中不存在查询的数据,再去查数据库模块,然后把数据库模块的数据再覆盖到缓存模块上。这样就可以实现逐级的查询,并且每一级的查询量都会呈现数量级的递减,因为大部分的查询都能够被内存模块击中,内存模块的查询成功率会很高,然后部分的大数据或者说数据请求量较小的数据放在缓存模块里面进行查询。
上述流程还提供了数据更新机制和灾备机制,数据更新并发更新数据库模块与缓存模块,然后异步广播删除内存模块的数据,保证数据一致性。对于数据版本检查,开启定时版本检查任务,将热点数据的版本号同时进行二级缓存,防止因广播通知等原因造成二级缓存数据不一致,允许一定时间内数据不一致,但最终数据一致。
现有的查询内存的方案,如果查询的数据不存在,就直接返回错误,存在问题就是有可能是因为内存和数据库的数据不一致导致的,即有可能数据库数据发生了更新,但没有及时通知到内存,之前是用ZK的方式,就是使用zookeeper框架内通知的,如果zookeeper框架出现问题就会导致内存的数据和数据库的数据不一致,产生脏数据问题,本可选实施例使用两种方式,一种还是ZK,就是利用zookeeper的广播通知;另外一种方式是使用版本检查的任务,该任务就是每隔一段时间就会去检查版本号,在版本号不一致的情况下去检查缓存模块和内存模块的数据,如果数据不一致,会自动去更新内存模块和缓存模块,这样就保证了在一定时间内数据的一致性。
通过本可选实施例的流程,能够提高服务的高并发和高可用的能力,提高内存的使用效率,譬如,实际测试中以前内存使用率达到了50%,甚至可能会达到80%,在使用本可选实施例提供的缓存机制后内存使用率达到30%以下。
在本可选实施例中,采用二级热点缓存方案,增强服务并发能力的同时提升内存利用率,同时在二级缓存的基础上增加灾备机制,保证数据最终一致性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据的查询方法的数据的查询装置。图5是根据本申请实施例的一种可选的数据的查询装置的示意图,如图5所示,该装置可以包括:
第一接收模块52,用于接收数据查询请求,其中,所述数据查询请求用于请求查询存储系统中的目标数据;
第一查询模块54,用于从所述存储系统的内存模块中查询所述目标数据,其中,所述存储系统包括:所述内存模块,缓存模块和数据库模块,所述缓存模块用于缓存所述数据库模块中存储的数据,所述内存模块用于存储所述缓存模块缓存的数据中具有预设数据特征的数据;
第一发送模块56,用于在从所述存储系统的内存模块中查询到所述目标数据的情况下,发送所述内存模块中存储的所述目标数据。
需要说明的是,该实施例中的第一接收模块52可以用于执行本申请实施例中的步骤S202,该实施例中的第一查询模块54可以用于执行本申请实施例中的步骤S204,该实施例中的第一发送模块56可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,存储系统包括:内存模块,缓存模块和数据库模块,缓存模块用于缓存数据库模块中存储的数据,内存模块用于存储缓存模块缓存的数据中具有预设数据特征的数据,这样将数据库模块中的数据通过二级缓存的机制存储到缓存模块和内存模块中,在接收到数据查询请求时,优先查询内存模块,如果目标数据是具有预设数据特征的,那么在内存模块中就可能会命中目标数据,如果命中,则返回内存模块中存储的目标数据,通过上述这种二级缓存机制,达到了快速命中数据的目的,从而实现了提高数据查询效率的技术效果,进而解决了相关技术中数据查询效率较低的技术问题。
作为一种可选的实施例,所述装置还包括:
第二查询模块,用于在从所述存储系统的内存模块中查询所述目标数据之后,在从所述存储系统的内存模块中未查询到所述目标数据的情况下,从所述存储系统的缓存模块查询所述目标数据;
第二发送模块,用于在从所述存储系统的缓存模块中查询到所述目标数据的情况下,发送所述缓存模块中存储的所述目标数据。
作为一种可选的实施例,所述装置还包括:
确定模块,用于在从所述存储系统的缓存模块查询所述目标数据之后,在从所述存储系统的缓存模块中查询到所述目标数据的情况下,确定所述目标数据是否具有所述预设数据特征;
第一存储模块,用于在确定所述目标数据具有所述预设数据特征的情况下,将所述目标数据存储到所述内存模块中。
作为一种可选的实施例,所述装置还包括:
第三查询模块,用于在从所述存储系统的缓存模块查询所述目标数据之后,在从所述存储系统的缓存模块中未查询到所述目标数据的情况下,从所述存储系统的数据库模块查询所述目标数据;
第三发送模块,用于在从所述存储系统的数据库模块中查询到所述目标数据的情况下,将所述数据库模块中存储的所述目标数据发送至所述客户端;
第二存储模块,用于将所述数据库模块中存储的所述目标数据存储到所述缓存模块中。
作为一种可选的实施例,所述装置还包括:
建立模块,用于在接收客户端发送的数据查询请求之前,建立所述存储系统中的所述内存模块,所述缓存模块和所述数据库模块;
获取模块,用于获取所述客户端对应的目标应用的应用数据;
第三存储模块,用于将所述应用数据存储到所述缓存模块和所述数据库模块中,并确定所述预设数据特征包括:数据访问频率高于目标频率,或者,数据量低于目标数据量。
作为一种可选的实施例,所述装置还包括:
第二接收模块,用于在将所述应用数据存储到所述缓存模块和所述数据库模块中,并将所述应用数据中具有所述预设数据特征的数据存储到所述内存模块中之后,接收所述目标应用发送的数据更新信息;
更新模块,用于按照所述数据更新信息的指示对所述缓存模块和所述数据库模块中存储的数据进行更新,并删除所述内存模块中存储的数据。
作为一种可选的实施例,所述装置还包括:
检查模块,用于在将所述应用数据存储到所述缓存模块和所述数据库模块中,并将所述应用数据中具有所述预设数据特征的数据存储到所述内存模块中之后,每隔目标时间间隔检查所述内存模块中存储的数据的第一数据标识与所述缓存模块中存储的数据的第二数据标识是否一致;
删除模块,用于在检查所述第一数据标识与所述第二数据标识不一致的情况下,删除所述内存模块中存储的数据。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述数据的查询方法的服务器或终端。
图6是根据本申请实施例的一种终端的结构框图,如图6所示,该终端可以包括:一个或多个(图中仅示出一个)处理器601、存储器603、以及传输装置605,如图6所示,该终端还可以包括输入输出设备607。
其中,存储器603可用于存储软件程序以及模块,如本申请实施例中的数据的查询方法和装置对应的程序指令/模块,处理器601通过运行存储在存储器603内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据的查询方法。存储器603可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器603可进一步包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置605用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置605包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置605为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器603用于存储应用程序。
处理器601可以通过传输装置605调用存储器603存储的应用程序,以执行下述步骤:
S1,接收数据查询请求,其中,所述数据查询请求用于请求查询存储系统中的目标数据;
S2,从所述存储系统的内存模块中查询所述目标数据,其中,所述存储系统包括:所述内存模块,缓存模块和数据库模块,所述缓存模块用于缓存所述数据库模块中存储的数据,所述内存模块用于存储所述缓存模块缓存的数据中具有预设数据特征的数据;
S3,在从所述存储系统的内存模块中查询到所述目标数据的情况下,发送所述内存模块中存储的所述目标数据。
采用本申请实施例,提供了一种数据的查询的方案。存储系统包括:内存模块,缓存模块和数据库模块,缓存模块用于缓存数据库模块中存储的数据,内存模块用于存储缓存模块缓存的数据中具有预设数据特征的数据,这样将数据库模块中的数据通过二级缓存的机制存储到缓存模块和内存模块中,在接收到数据查询请求时,优先查询内存模块,如果目标数据是具有预设数据特征的,那么在内存模块中就可能会命中目标数据,如果命中,则返回内存模块中存储的目标数据,通过上述这种二级缓存机制,达到了快速命中数据的目的,从而实现了提高数据查询效率的技术效果,进而解决了相关技术中数据查询效率较低的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图6所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图6其并不对上述电子装置的结构造成限定。例如,终端还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccessMemory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行数据的查询方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,接收数据查询请求,其中,所述数据查询请求用于请求查询存储系统中的目标数据;
S2,从所述存储系统的内存模块中查询所述目标数据,其中,所述存储系统包括:所述内存模块,缓存模块和数据库模块,所述缓存模块用于缓存所述数据库模块中存储的数据,所述内存模块用于存储所述缓存模块缓存的数据中具有预设数据特征的数据;
S3,在从所述存储系统的内存模块中查询到所述目标数据的情况下,发送所述内存模块中存储的所述目标数据。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。