一种数据获取方法及装置与流程

文档序号:12734086阅读:195来源:国知局
一种数据获取方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种数据获取方法及装置。



背景技术:

随着互联网技术的快速发展,各种各样的信息通过互联网进行传播,人们可以通过互联网获取所需的信息。在实际应用中,互联网公司利用网站提供网络服务,这样用户可以通过访问网站,获取自己所需要的信息。

具体的,当网站每次获取到访问请求时,其可以根据访问请求,确定待获取的数据,并从数据库获取待获取的数据。当网站获取的访问请求比较多,并发请求量比较大的时候,将造成访问数据库次数增加,从而增大数据库的压力,导致数据库访问速度比较慢,获取数据的时间比较长。



技术实现要素:

本发明实施例的目的在于提供一种数据获取方法及装置,以提高数据的获取速度。具体技术方案如下:

第一方面,为了达到上述目的,本发明实施例公开了一种数据获取方法,所述方法包括:

获取访问请求,并确定所述访问请求对应的目标数据;

判断缓存中是否存在所述目标数据中的全部数据;其中,所述缓存中存储有数据库中部分数据;

如果是,从所述缓存中获取所述目标数据;

如果否,在所述目标数据中确定存在于所述缓存中的第一数据,以及不存在于所述缓存中的第二数据;

从所述缓存中获取所述第一数据,从所述数据库中获取所述第二数据。

可选的,所述从所述缓存中获取所述第一数据,从所述数据库中获取所述第二数据之后,所述方法还包括:

将所述第二数据存储到所述缓存中。

可选的,所述缓存中存储的数据是在缓存有效期内的数据,所述缓存有效期是针对所述数据库中不同的数据预先设置的。

可选的,所述方法还包括:

获取针对数据的更改请求;其中,所述更改请求包括以下至少一项:数据修改请求、数据添加请求、数据删除请求以及数据合并请求;

根据所述更改请求,更改所述数据库中对应的数据;

确定所述数据库中已更改数据的标识信息,根据所述标识信息,更新所述缓存中的数据。

可选的,所述从缓存中获取所述目标数据,包括:

将所述目标数据的标识信息与预先设置的分页数据的标识信息进行匹配;

根据匹配结果确定所述目标数据是否为分页数据;

如果是,确定所述目标数据对应的页码;从缓存中所述页码对应的数据存储位置获取所述目标数据,其中,所述缓存预先将在同一个页码上的分页数据,存储在同一个存储区域内不同的存储位置中。

第二方面,为了达到上述目的,本发明实施例还公开了一种数据获取装置,所述装置包括:

第一确定模块,用于获取访问请求,并确定所述访问请求对应的目标数据;

判断模块,用于判断缓存中是否存在所述目标数据中的全部数据;其中,所述缓存中存储有数据库中部分数据;

第一获取模块,用于在所述判断模块的判断结果为是的情况下,从所述缓存中获取所述目标数据;

第二确定模块,用于在所述判断模块的判断结果为否的情况下,在所述目标数据中确定存在于所述缓存中的第一数据,以及不存在于所述缓存中的第二数据;

第二获取模块,用于从所述缓存中获取所述第一数据,从所述数据库中获取所述第二数据。

可选的,所述装置还包括:

存储模块,用于将所述第二数据存储到所述缓存中。

可选的,所述缓存中存储的数据是在缓存有效期内的数据,所述缓存有效期是针对所述数据库中不同的数据预先设置的。

可选的,所述装置还包括:

第三获取模块,用于获取针对数据的更改请求;其中,所述更改请求包括以下至少一项:数据修改请求、数据添加请求、数据删除请求以及数据合并请求;

更改模块,用于根据所述更改请求,更改所述数据库中对应的数据;

更新模块,用于确定所述数据库中已更改数据的标识信息,根据所述标识信息,更新所述缓存中的数据。

可选的,所述第一获取模块,包括:

匹配子模块,用于将所述目标数据的标识信息与预先设置的分页数据的标识信息进行匹配;

确定子模块,用于根据匹配结果确定所述目标数据是否为分页数据;

获取子模块,用于在所述确定子模块的确定结果为是的情况下,确定所述目标数据对应的页码;从缓存中所述页码对应的数据存储位置获取所述目标数据,其中,所述缓存预先将在同一个页码上的分页数据,存储在同一个存储区域内不同的存储位置中。

本发明实施例提供的一种数据获取方法及装置,可以在缓存中获取数据,从缓存中获取数据的速度比从数据库中获取数据的速度快,从而能够减少获取数据的时间。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的数据获取方法的第一种流程示意图;

图2为本发明实施例提供的数据获取方法的第二种流程示意图;

图3为本发明实施例提供的数据获取方法的第三种流程示意图;

图4为本发明实施例提供的数据获取方法的第四种流程示意图;

图5为本发明实施例提供的数据获取装置的第一种结构示意图;

图6为本发明实施例提供的数据获取装置的第二种结构示意图;

图7为本发明实施例提供的数据获取装置的第三种结构示意图;

图8为本发明实施例提供的数据获取装置的第四种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了解决现有技术中的问题,本发明实施例提供了一种数据获取方法及装置。下面首先对一种数据获取方法进行详细说明。

图1为本发明实施例提供的数据获取方法的第一种流程示意图,方法包括:

S101:获取访问请求,并确定所述访问请求对应的目标数据。

需要说明的是,本发明实施例提供的数据获取方法可以应用于PC(Personal Computer,个人计算机)互联网中的设备,也可以应用于移动互联网中的设备。这里所说的PC互联网即传统的互联网,将计算机网络互相联接在一起的方法可称作“网络互联”,在这基础上发展出覆盖全世界的全球性互联网络称互联网。这里所说的移动互联网是指互联网的技术、平台、商业模式和应用与移动通信技术结合并实践的活动的总称。这里所说的设备可以为网站中用于处理访问请求的服务器。

在本发明实施例中,访问请求是访问网站中的网页的请求。在服务器获取到访问请求之后,可以确定访问请求对应的目标数据。具体的,可以根据访问请求中包含的待访问网页的标识信息。根据待访问网页的标识信息,就可以确定待访问网页上需要加载的数据,从而确定目标数据。

示例性的,访问请求访问的是移动端的财经视频网站的首页,该网站的首页分为:视频直播、图文直播室、操盘计划和名家动态等版块。服务器接收到上述访问请求后,可以根据访问请求中包含的首页的标识信息,确定首页对应的数据。进一步地,当服务器获取到针对各个版块的访问请求时,各个版块中预先设置的需要加载的数据则为目标数据。其中,首页对应的数据可以理解为在首页中需要展示的数据,这些数据是预先确定的。当然,首页中也可以包括部分定时更新的数据,具体的,定时更新的数据可以根据以往数据的访问的频率的排序确定,也可以是通过其他方法确定,在本发明实施例中对此不进行限定。

财经视频网站的视频直播版块中,有最新的视频直播列表以及往期直播回放视频列表,还可以播放视频,下拉该版块,会显示更多的内容。

图文直播室版块中,显示专家直播室列表。点击相应的专家直播室,可以进入该专家的图文直播室进行互动直播。拖动专家直播室列表可显示更多专家的直播室。其中,各专家直播室在列表中的先后顺序可以根据订阅人数进行排序得到。

名家动态版块中有根据人气算法筛选出的名家用户发布的动态的列表,点击可查看动态全文详情,还可以进行评论和转发等互动操作。滑动该列表,可以加载更多的动态。

操盘计划版块中包含专家理财师的操盘计划列表,显示操盘计划预期收益和当前收益等信息。点击可查看操盘计划详情,还可以进行订阅操作等。

如果访问请求访问的是访问首页中的某一个版块的请求,则目标数据是该版块对应的数据。在首页中点击版块对应的标签,则对财经视频网站中的服务器来说,就是获取了访问请求。服务器根据点击的标签对应的版块的待加载内容,可以确定目标数据。当然,在各个版块中进行点击、拖动、滑动等以获取更多信息的操作,则对财经视频网站中的服务器来说,就是获取了访问请求。综上所述,用户对财经视频网站进行获取信息的操作,就是向对财经视频网站中的服务器发送了访问请求。

S102:判断缓存中是否存在所述目标数据中的全部数据;其中,所述缓存中存储有数据库中部分数据,如果是,执行步骤S103,如果否,执行步骤S104。

需要说明的是,这里所说的缓存可以为Redis或Memcache。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value(键-值)数据库。其中,ANSI是一种字符代码,为使计算机支持更多语言,通常使用0x00~0x7f范围的1个字节来表示1个英文字符。Memcache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统。

在本发明实施例中,可以在缓存中存储数据库中的部分数据。具体的,缓存中存储的数据是在缓存有效期内的数据。例如,一开始,可以在缓存中存储数据库的全部数据,当任一数据在缓存中存储的时间超过其对应的缓存有效期后,就将该数据删除。缓存中存储的数据不多于数据库中的数据。

其中,缓存有效期可以是针对数据库中不同的数据预先设置的。需要说明的是,缓存有效期可以是根据数据属性确定的。例如,可以根据数据的点击率确定。如果一个数据的点击率比较少,则缓存有效期比较短;如果一个数据的点击率比较多,则缓存有效期比较长。

当服务器确定访问请求对应的目标数据后,其可以判断缓存中是否存在目标数据中的全部数据。例如,服务器可以根据目标数据中包括的各数据的标识信息,判断缓存中是否存在目标数据中的全部数据。

S103:从所述缓存中获取所述目标数据。

当缓存中包括目标数据中的全部数据时,说明该目标数据在缓存有效期内,服务器可以从缓存中获取目标数据。由缓存和数据库本身的性质所确定的,在缓存中获取数据的速度比在数据库中获取数据的速度快。而且在缓存中获取数据,能够减少对数据库的访问次数,降低数据库压力,提高网站的访问速度,使得网站可承受的并发访问的数量大大提高,预防因为并发访问数量大而造成的宕机。

因为在缓存中获取数据的速度比在数据库中获取数据的速度快,会明显提高操作的流畅度,有效地解决了卡顿等现象,提高了用户体验。

S104:在所述目标数据中确定存在于所述缓存中的第一数据,以及不存在于所述缓存中的第二数据。

在本发明实施例中,缓存中不存在目标数据的全部数据,则说明目标数据全部不在缓存有效期内,或者目标数据中的部分数据不在缓存有效期内。在缓存中能够查找的数据就是这里说的第一数据,不能查找到的数据就是第二数据。当然,确定第一数据和第二数据的方法并不仅限于上述示例。

需要说明的是,当目标数据中的全部数据均不在缓存中,则第一数据中不包括任何数据,第二数据为目标数据中的全部数据。

S105:从所述缓存中获取所述第一数据,从所述数据库中获取所述第二数据。

服务器确定存在于缓存中的第一数据,以及不存在于缓存中的第二数据后,其可以从缓存中获取第一数据,从数据库中获取第二数据,以获取到全部的目标数据。

应用本发明实施例,可以在缓存中获取数据,从缓存中获取数据的速度比从数据库中获取数据的速度快,从而能够减少获取数据的时间。

图2为本发明实施例所提供的数据获取方法的第二种流程示意图。基于图1所提供的实施例,本发明实施例所提供的一种数据获取方法在S105之后,还包括:

S106,将所述第二数据存储到所述缓存中。

第二数据不在缓存中,为了减少后续获取数据时对数据库的访问次数,服务器可以将第二数据存储到缓存中。下次,在第二数据的缓存有效期内,可以直接从缓存中获取第二数据。这样减少了数据获取时间,提高了网站的访问速度,进而,提高了用户体验。

应用本发明实施例,将数据存储在缓存中,下一次在该数据的缓存有效期内,直接在缓存中获取该数据,从缓存中获取数据的速度比从数据库中获取数据的速度快,从而能够减少获取数据的时间。

在本发明的另一个具体实施例中,参见图3,提供了数据获取方法的第三种流程示意图,与图1所示实施例相比,本实施例中,从缓存中获取所述目标数据(S103),包括:

S1031:将所述目标数据的标识信息与预先设置的分页数据的标识信息进行匹配。

在本发明实施例中,可以预先针对各分页数据,设置对应的标识信息。例如,页码1的标识信息是标识信息A,页码2对应的标识信息是标识信息B,页码3对应的标识信息是标识信息C。

在访问请求中可以包含目标数据的标识信息。其中,不管目标数据中包含一个或多个数据,目标数据的标识信息只有一个。当目标数据中包含多个数据时,目标数据的标识信息是目标数据中所有数据的整体标识信息。

例如,如果目标数据的标识信息是标识信息C,则匹配成功;如果目标数据的标识信息是标识信息M,则匹配失败。

S1032:根据匹配结果确定所述目标数据是否为分页数据,如果是,执行步骤S1033。

如果匹配结果为成功,则可以确定目标数据是分页数据;如果匹配结果为失败,则可以确定目标数据不是分页数据。

S1033:确定所述目标数据对应的页码;从缓存中所述页码对应的数据存储位置获取所述目标数据,其中,所述缓存预先将在同一个页码上的分页数据,存储在同一个存储区域内不同的存储位置中。

在本发明实施例中,访问请求中较为频繁的请求为加载更多数据的访问请求。对于这类访问请求,需要获取大量的数据,然而获取到大量的数据之后,用户并不一定全部需要或者全部查看。因此,可以将分页加入缓存,当进行目标数据获取时,获取的是分页数据,这样避免了资源的浪费和频繁的请求造成的负载过高。

确定目标数据对应的页码可以为:将目标数据的标识信息与分页数据的标识信息进行匹配,匹配到的分页数据对应的页码为目标数据对应的页码。当然,并不仅限于上述确定目标数据对应的页码的方法。

在本发明实施例中,服务器可以将缓存中同一个页码上的数据存储在同一个存储区域内不同存储位置,这样可以快速地确定分页数据的存储位置,可以提高获取数据的速度。

同样的,在本发明实施例中,服务器还可以将数据库中同一个页码上的数据存储在同一个存储区域内不同存储位置。服务器在获取数据时,当目标数据为分页数据,且不在缓存中时,可以在数据库中目标数据的页码对应的存储位置中,获取目标数据。当目标数据是分页数据,且部分数据不在缓存中,可以从缓存中页码对应的数据存储位置获取目标数据中的部分数据,在数据库中目标数据的页码对应的存储位置中,获取目标数据中的另外一部分数据。

应用本发明实施例,当进行目标数据获取时,获取的是分页数据,这样避免了资源的浪费和频繁的请求造成的负载过高。

在本发明实施例的一个可选实施方式,参见图4,提供了数据获取方法的第四种流程示意图,该方法还包括以下步骤:

S107:获取针对数据的更改请求;其中,所述更改请求包括以下至少一项:数据修改请求、数据添加请求、数据删除请求以及数据合并请求。

在本发明实施例中,可以随时对数据库中的数据进行更改,这里所说的更改包括数据的修改、数据的添加、数据的删除、数据的合并。

S108:根据所述更改请求,更改所述数据库中对应的数据。

服务器在获取到更改请求后,确定更改请求中的数据的标识信息。当更改请求为数据修改请求时,数据的标识信息为待修改数据的标识信息,根据数据的标识信息,确定待修改的数据,对待修改数据进行修改。当更改请求为数据添加请求时,数据的标识信息为待添加数据的标识信息,根据数据的标识信息,从数据添加请求中包含的待添加数据的存储位置,获取待添加的数据存储至数据库。当更改请求为数据删除请求时,数据的标识信息为待删除数据的标识信息,根据数据的标识信息,从数据库中确定待删除的数据,删除所确定的数据。当更改请求为数据合并请求时,数据的标识信息为待合并数据的标识信息,根据数据的标识信息,从数据库中确定待合并的数据,合并所确定的数据。

S109:确定所述数据库中已更改数据的标识信息,根据所述标识信息,更新所述缓存中的数据。

当根据更改请求对数据库中的数据进行更改后,为了保证数据库中的数据与缓存中的数据的同步,还需要更新缓存中的数据。当然,在更新缓存中的数据之前,还需要判断数据库中待更改的数据是否在缓存中,如果在的话,才更新缓存中的数据。

当更改请求为数据修改请求时,根据已更改数据的标识信息和更改前的数据标识信息,在缓存中确定修改前的数据,将修改前的数据替换为已修改的数据。当更改请求为数据添加请求时,根据标识信息确定添加的数据,从数据库中获取添加的数据,并存储在缓存中。当更改请求为数据删除请求时,将待删除的数据从缓存中删除。当更改请求为数据合并请求时,在缓存中确定合并前的数据,将合并前的数据替换为已合并的数据。

应用本发明实施例,对数据库中的数据更改之后,根据数据库更改的数据的标识信息,更改缓存中的数据,保证了数据的同步,同时也保证了在缓存中获取的数据的正确性。

与图1所示的方法实施例相对应,图5为本发明实施例提供的数据获取装置的第一种结构示意图,该装置包括第一确定模块201、判断模块202、第一获取模块203、第二确定模块204和第二获取模块205,其中,

第一确定模块201,用于获取访问请求,并确定所述访问请求对应的目标数据;

判断模块202,用于判断缓存中是否存在所述目标数据中的全部数据;其中,所述缓存中存储有数据库中部分数据;

第一获取模块203,用于在所述判断模块的判断结果为是的情况下,从所述缓存中获取所述目标数据;

第二确定模块204,用于在所述判断模块的判断结果为否的情况下,在所述目标数据中确定存在于所述缓存中的第一数据,以及不存在于所述缓存中的第二数据;

第二获取模块205,用于从所述缓存中获取所述第一数据,从所述数据库中获取所述第二数据。

应用本发明实施例,可以在缓存中获取数据,从缓存中获取数据的速度比从数据库中获取数据的速度快,从而能够减少获取数据的时间。

具体的,所述缓存中存储的数据是在缓存有效期内的数据,所述缓存有效期是针对所述数据库中不同的数据预先设置的。

与图2所示的方法实施例相对应,图6为本发明实施例提供的数据获取装置的第二种结构示意图,该装置还包括存储模块206,其中,

存储模块206,用于将所述第二数据存储到所述缓存中。

应用本发明实施例,将数据存储在缓存中,下一次在该数据的缓存有效期内,直接在缓存中获取该数据,从缓存中获取数据的速度比从数据库中获取数据的速度快,从而能够减少获取数据的时间

与图3所示的方法实施例相对应,图7为本发明实施例提供的数据获取装置的第三种结构示意图,第一获取模块203包括匹配子模块2031、确定子模块2032和获取子模块2033,其中,

匹配子模块2031,用于将所述目标数据的标识信息与预先设置的分页数据的标识信息进行匹配;

确定子模块2032,用于根据匹配结果确定所述目标数据是否为分页数据;

获取子模块2033,用于在所述确定子模块的确定结果为是的情况下,确定所述目标数据对应的页码;从缓存中所述页码对应的数据存储位置获取所述目标数据,其中,所述缓存预先将在同一个页码上的分页数据,存储在同一个存储区域内不同的存储位置中。

应用本发明实施例,当进行目标数据获取时,获取的是分页数据,这样避免了资源的浪费和频繁的请求造成的负载过高。

与图4示的方法实施例相对应,图8为本发明实施例提供的数据获取装置的第四种结构示意图,装置还包括:第三获取模块207、更改模块208和更新模块209,其中,

第三获取模块207,用于获取针对数据的更改请求;其中,所述更改请求包括以下至少一项:数据修改请求、数据添加请求、数据删除请求以及数据合并请求;

更改模块208,用于根据所述更改请求,更改所述数据库中对应的数据;

更新模块209,用于确定所述数据库中已更改数据的标识信息,根据所述标识信息,更新所述缓存中的数据。

应用本发明实施例,对数据库中的数据更改之后,根据数据库更改的数据的标识信息,更改缓存中的数据,保证了数据的同步,同时也保证了在缓存中获取的数据的正确性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1