数据访问方法及设备与流程

文档序号:13421985阅读:192来源:国知局
数据访问方法及设备与流程

本发明涉及一种数据访问方法及设备。



背景技术:

现有php(hypertextpreprocessor,“超文本预处理器”)环境缓存系统,主要有两种模式:

(1)数据库+集中式内存缓存,原理是将一部分会高频访问的数据缓存至访问速度更快的集中式内存缓存中,而存在的问题是如果数据过于集中,会把集中式内存缓存击垮,并且如果写的数据量大,会导致整体集中式内存缓存的性能降低;

(2)数据库+本地内存缓存,原理是将一部分会高频访问的数据缓存至每台机器的本地内存缓存中,存在的问题是如果分布式环境中,会出现同一请求至不同机器的本地内存缓存,会产生读取到数据不一致的问题。



技术实现要素:

本发明的目的在于提供一种数据访问方法,能够解决避免数据集中访问时不稳定和数据访问量大时的性能差的问题。

为解决上述问题,本发明提供一种数据访问方法,包括:

接收读请求,判断集中式内存缓存的访问失败次数是否超过预设阈值,

若未超过,则从所述集中式内存缓存中读取对应于所述读请求的数据;

若超过,则从本地内存缓存中读取对应于所述读请求的数据;

若从本地内存缓存中读取对应于所述读请求的数据失败,则判断集中式数据库的访问失败次数是否超过预设阈值,

若未超过,则从所述集中式数据库读取对应于所述读请求的数据;

若超过,则从本地文件缓存中读取对应于所述读请求的数据。

进一步的,在上述方法中,所述方法,还包括:

将集中式内存缓存的访问失败次数和/或集中式数据库的访问失败次数记录于所述本地内存缓存中。

进一步的,在上述方法中,从所述集中式数据库读取对应于所述读请求的数据之后,还包括:

若从所述集中式数据库读取对应于所述读请求的数据失败,则从本地文件缓存中读取对应于所述读请求的数据。

进一步的,在上述方法中,从所述集中式内存缓存中读取对应于所述读请求的数据,包括:

分别从所述本地内存缓存和集中式内存缓存中读取对应于所述读请求的数据的版本号,

若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据;

若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据。

进一步的,在上述方法中,若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据之后,还包括:

将从所述集中式内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述本地内存缓存中。

进一步的,在上述方法中,若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据之后,还包括:

将从所述本地内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述集中式内存缓存中。

进一步的,在上述方法中,若未超过,则从所述集中式数据库读取对应于所述读请求的数据之后,还包括:

若从所述集中式数据库读取对应于所述读请求的数据成功,则将从所述集中式数据库中读取对应于所述读请求的数据和对应的版本号,分别写入所述本地内存缓存和集中式内存缓存中。

进一步的,在上述方法中,所述本地文件缓存中的数据为每隔预设时间由所述集中式数据库导出。

根据本发明的另一面,提供一种数据访问设备,包括:

第一判断装置,用于接收读请求,判断集中式内存缓存的访问失败次数是否超过预设阈值,若未超过,则从所述集中式内存缓存中读取对应于所述读请求的数据;若超过,则从本地内存缓存中读取对应于所述读请求的数据;

第二判断装置,用于若从本地内存缓存中读取对应于所述读请求的数据失败,则判断集中式数据库的访问失败次数是否超过预设阈值,若未超过,则从所述集中式数据库读取对应于所述读请求的数据;若超过,则从本地文件缓存中读取对应于所述读请求的数据。

进一步的,在上述设备中,所述设备还包括记录装置,用于将集中式内存缓存的访问失败次数和/或集中式数据库的访问失败次数记录于所述本地内存缓存中。

进一步的,在上述设备中,所述第二判断装置,还用于从所述集中式数据库读取对应于所述读请求的数据之后,若从所述集中式数据库读取对应于所述读请求的数据失败,则从本地文件缓存中读取对应于所述读请求的数据。

进一步的,在上述设备中,所述第一判断装置,用于分别从所述本地内存缓存和集中式内存缓存中读取对应于所述读请求的数据的版本号,若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据;若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据。

进一步的,在上述设备中,所述第一判断装置,还用于若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据之后,将从所述集中式内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述本地内存缓存中。

进一步的,在上述设备中,所述第一判断装置,还用于若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据之后,将从所述本地内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述集中式内存缓存中。

进一步的,在上述设备中,所述第二判断装置,还用于若未超过,则从所述集中式数据库读取对应于所述读请求的数据之后,若从所述集中式数据库读取对应于所述读请求的数据成功,则将从所述集中式数据库中读取对应于所述读请求的数据和对应的版本号,分别写入所述本地内存缓存和集中式内存缓存中。

进一步的,在上述设备中,所述本地文件缓存中的数据为每隔预设时间由所述集中式数据库导出。

与现有技术相比,本发明结合集中式数据库+集中式内存缓存+本地内存缓存+本地文件缓存,避免数据集中访问时不稳定和数据访问量大时的性能差的问题,保证当集中式数据库、集中式内存缓存出现宕机时不影响整体数据访问服务,从而降低了整体的请求访问耗时,尤其在读取数据量大小超过10kb的情况下,性能提升明显,并提高了系统承载能力,还提升了系统的稳定性,在集中式数据库、集中式内存缓存都出现问题的情况下,系统也能保证数据访问无误差问题和长时间的可用访问。本申请适用于php语言环境需要数据访问要求高并发、高性能和高可用性的场景。另外,通过比较版本号,可以避免数据读取不一致的问题。

附图说明

图1是本发明一实施例的数据访问方法的流程图;

图2是本发明另一实施例的数据访问方法的流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,本发明提供一种数据访问方法,包括:

步骤s1,接收读请求,判断集中式内存缓存的访问失败次数是否超过预设阈值,

在此,集中式内存缓存包括但不限于redis、memcache;

若未超过,步骤s2,则从所述集中式内存缓存中读取对应于所述读请求的数据;

若超过,步骤s3,则从本地内存缓存中读取对应于所述读请求的数据;

在此,集中式内存缓存的访问失败次数超过预设阈值,则说明集中式内存缓存访问出现问题,这时可以转到由本地内存缓存提供数据访问服务;

所述本地内存缓存包括但不限于apc、apcu、yac等;

步骤s4,若从本地内存缓存中读取对应于所述读请求的数据失败,则判断集中式数据库的访问失败次数是否超过预设阈值,

若未超过,则步骤s5,从所述集中式数据库读取对应于所述读请求的数据;

若超过,则步骤s6,从本地文件缓存中读取对应于所述读请求的数据;

在此,若集中式数据库的访问失败次数超过预设阈值,则说明集中式数据库的访问存在问题,可以切换由本地文件缓存提供数据访问服务。

本实施例结合集中式数据库+集中式内存缓存+本地内存缓存+本地文件缓存,避免数据集中访问时不稳定和数据访问量大时的性能差的问题,保证当集中式数据库、集中式内存缓存出现宕机时不影响整体数据访问服务,从而降低了整体的请求访问耗时,尤其在读取数据量大小超过10kb的情况下,性能提升明显,并提高了系统承载能力,还提升了系统的稳定性,在集中式数据库、集中式内存缓存都出现问题的情况下,系统也能保证数据访问无误差问题和长时间的可用访问。本申请适用于php语言环境需要数据访问要求高并发、高性能和高可用性的场景。

本申请一实施例的数据访问方法,所述方法还包括:

将集中式内存缓存的访问失败次数和/或集中式数据库的访问失败次数记录于所述本地内存缓存中。

在此,通过将集中式内存缓存的访问失败次数和/或集中式数据库的访问失败次数记录于所述本地内存缓存中,在每次需要判断集中式内存缓存和/或集中式数据库是否可用是,可以快速地从本地内存缓存中读取对应的访问失败次数,作为可靠的判断依据。

如图1所示,本申请一实施例的数据访问方法,步骤s5,从所述集中式数据库读取对应于所述读请求的数据之后,还包括:

若从所述集中式数据库读取对应于所述读请求的数据失败,则步骤s6,从本地文件缓存中读取对应于所述读请求的数据。

在此,在判断所述集中式数据库可用之后,若从所述集中式数据库读取对应于所述读请求的数据失败,说明所述集中式数据库访问出现了问题,这时可以切换到由本地文件缓存提供服务。

如图2所示,本申请一实施例的数据访问方法,步骤s5,从所述集中式内存缓存中读取对应于所述读请求的数据,包括:

步骤s51,分别从所述本地内存缓存和集中式内存缓存中读取对应于所述读请求的数据的版本号,

步骤s52,若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据;

步骤s54,若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据。

在此,版本号大的数据表明是最新的数据,通过比较版本号,如果本地内存缓存中的数据最新,则从所述本地内存缓存中读取对应于所述读请求的数据,否则,则从所述集中式内存缓存中读取对应于所述读请求的数据。本实施例通过比较版本号,可以避免数据读取不一致的问题。

如图2所示,本申请一实施例的数据访问方法,步骤s52,若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据之后,还包括:

步骤s53,将从所述集中式内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述本地内存缓存中,从而进一步保证集中式内存缓存与本地内存缓存中的数据的一致性。

本申请一实施例的数据访问方法,步骤s54,若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据之后,还包括:

步骤s55,将从所述本地内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述集中式内存缓存中,从而进一步保证集中式内存缓存与本地内存缓存中的数据的一致性。

如图1所示,本申请一实施例的数据访问方法,步骤s5,从所述集中式数据库读取对应于所述读请求的数据之后,还包括:

步骤s7,若从所述集中式数据库读取对应于所述读请求的数据成功,则将从所述集中式数据库中读取对应于所述读请求的数据和对应的版本号,分别写入所述本地内存缓存和集中式内存缓存中,从而进一步保证集中式数据库、集中式内存缓存和本地内存缓存中的数据的一致性。

本申请一实施例的数据访问方法,所述本地文件缓存中的数据为每隔预设时间由所述集中式数据库导出,从而进一步保证集中式数据库和本地文件缓存中的数据的一致性。

本申请一实施例的数据访问方法,具体可以包括:

1)一个读请求过来后,首先判断在本地内存缓存中存储的集中式内存缓存访问失败次数,如果访问失败次数超过一个阈值,则直接通过本地内存缓存访问数据;

2)如果集中式内存缓存访问失败次数没有超过一定的阈值,则先从本地内存缓存中获取数据的版本号;再通过集中式内存缓存服务获取数据的版本号,并将两个版本号进行比较;如果本地内存缓存大于等于集中式内存缓存中的版本号,则从本地内存缓存中访问数据;如果本地内存缓存小于集中式内存缓存中的版本号,则从集中式内存缓存中获取数据,数据获取成功后,更新本地内存缓存的版本号和数据;

3)如果通过本地内存缓存和集中式内存缓存获取数据出现失败,则先查看本地内存缓存中存储的集中式数据库的访问失败次数,如果集中式数据库的数据库访问异常次数超过一定的阈值,则直接从本地文件缓存中获取数据并返回;

4)如果集中式数据库的数据库访问失败次数没有超过一定的阈值,先通过集中式数据库访问数据,如果访问集中式数据库中数据成功,则将此数据写入集中式内存缓存服务,并更新它的版本号,如果访问集中式数据库中数据失败,则直接从本地文件缓存获取数据返回

上述步骤中,所有读集中式数据库、集中式内存缓存的失败的次数都会不断更新至本地内存缓存中,分别记录为集中式内存缓存的访问失败次数的值和集中式数据库的访问失败次数的值;另外,本地文件缓存是在线下每隔一段时间将集中式数据库的数据导出成文件。

根据本申请的另一面,还提供另一种数据访问设备,其特征在于,包括:

第一判断装置,用于接收读请求,判断集中式内存缓存的访问失败次数是否超过预设阈值,若未超过,则从所述集中式内存缓存中读取对应于所述读请求的数据;若超过,则从本地内存缓存中读取对应于所述读请求的数据;

在此,集中式内存缓存包括但不限于redis、memcache,集中式内存缓存的访问失败次数超过预设阈值,则说明集中式内存缓存访问出现问题,这时可以转到由本地内存缓存提供数据访问服务,所述本地内存缓存包括但不限于apc、apcu、yac等;

第二判断装置,用于若从本地内存缓存中读取对应于所述读请求的数据失败,则判断集中式数据库的访问失败次数是否超过预设阈值,若未超过,则从所述集中式数据库读取对应于所述读请求的数据;若超过,则从本地文件缓存中读取对应于所述读请求的数据。

在此,若集中式数据库的访问失败次数超过预设阈值,则说明集中式数据库的访问存在问题,可以切换由本地文件缓存提供数据访问服务。

本实施例结合集中式数据库+集中式内存缓存+本地内存缓存+本地文件缓存,避免数据集中访问时不稳定和数据访问量大时的性能差的问题,保证当集中式数据库、集中式内存缓存出现宕机时不影响整体数据访问服务,从而降低了整体的请求访问耗时,尤其在读取数据量大小超过10kb的情况下,性能提升明显,并提高了系统承载能力,还提升了系统的稳定性,在集中式数据库、集中式内存缓存都出现问题的情况下,系统也能保证数据访问无误差问题和长时间的可用访问。本申请适用于php语言环境需要数据访问要求高并发、高性能和高可用性的场景。

本申请的数据访问设备一实施例中,所述设备还包括记录装置,用于将集中式内存缓存的访问失败次数和/或集中式数据库的访问失败次数记录于所述本地内存缓存中。

在此,通过将集中式内存缓存的访问失败次数和/或集中式数据库的访问失败次数记录于所述本地内存缓存中,在每次需要判断集中式内存缓存和/或集中式数据库是否可用是,可以快速地从本地内存缓存中读取对应的访问失败次数,作为可靠的判断依据。

本申请的数据访问设备一实施例中,所述第二判断装置,还用于从所述集中式数据库读取对应于所述读请求的数据之后,若从所述集中式数据库读取对应于所述读请求的数据失败,则从本地文件缓存中读取对应于所述读请求的数据。

在此,在判断所述集中式数据库可用之后,若从所述集中式数据库读取对应于所述读请求的数据失败,说明所述集中式数据库访问出现了问题,这时可以切换到由本地文件缓存提供服务。

本申请的数据访问设备一实施例中,所述第一判断装置,用于分别从所述本地内存缓存和集中式内存缓存中读取对应于所述读请求的数据的版本号,若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据;若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据。

在此,版本号大的数据表明是最新的数据,通过比较版本号,如果本地内存缓存中的数据最新,则从所述本地内存缓存中读取对应于所述读请求的数据,否则,则从所述集中式内存缓存中读取对应于所述读请求的数据。本实施例通过比较版本号,可以避免数据读取不一致的问题。

本申请的数据访问设备一实施例中,所述第一判断装置,还用于若从所述本地内存缓存读取到的版本号小于从所述集中式内存缓存中读取到的版本号,则从所述集中式内存缓存中读取对应于所述读请求的数据之后,将从所述集中式内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述本地内存缓存中,从而进一步保证集中式内存缓存与本地内存缓存中的数据的一致性。

本申请的数据访问设备一实施例中,所述第一判断装置,还用于若从所述本地内存缓存读取到的版本号大于等于从所述集中式内存缓存中读取到的版本号,则从所述本地内存缓存中读取对应于所述读请求的数据之后,将从所述本地内存缓存中读取对应于所述读请求的数据和对应的版本号,写入所述集中式内存缓存中,从而进一步保证集中式内存缓存与本地内存缓存中的数据的一致性。

本申请的数据访问设备一实施例中,所述第二判断装置,还用于若未超过,则从所述集中式数据库读取对应于所述读请求的数据之后,若从所述集中式数据库读取对应于所述读请求的数据成功,则将从所述集中式数据库中读取对应于所述读请求的数据和对应的版本号,分别写入所述本地内存缓存和集中式内存缓存中,从而进一步保证集中式数据库、集中式内存缓存和本地内存缓存中的数据的一致性。

本申请的数据访问设备一实施例中,所述本地文件缓存中的数据为每隔预设时间由所述集中式数据库导出,从而进一步保证集中式数据库和本地文件缓存中的数据的一致性。

综上所述,本发明结合集中式数据库+集中式内存缓存+本地内存缓存+本地文件缓存,避免数据集中访问时不稳定和数据访问量大时的性能差的问题,保证当集中式数据库、集中式内存缓存出现宕机时不影响整体数据访问服务,从而降低了整体的请求访问耗时,尤其在读取数据量大小超过10kb的情况下,性能提升明显,并提高了系统承载能力,还提升了系统的稳定性,在集中式数据库、集中式内存缓存都出现问题的情况下,系统也能保证数据访问无误差问题和长时间的可用访问。本申请适用于php语言环境需要数据访问要求高并发、高性能和高可用性的场景。另外,通过比较版本号,可以避免数据读取不一致的问题。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

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