CN103324679A - 一种缓存服务器中数据更新的控制方法和设备 - Google Patents
一种缓存服务器中数据更新的控制方法和设备 Download PDFInfo
- Publication number
- CN103324679A CN103324679A CN2013102053530A CN201310205353A CN103324679A CN 103324679 A CN103324679 A CN 103324679A CN 2013102053530 A CN2013102053530 A CN 2013102053530A CN 201310205353 A CN201310205353 A CN 201310205353A CN 103324679 A CN103324679 A CN 103324679A
- Authority
- CN
- China
- Prior art keywords
- data
- state
- caching server
- action
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000009471 action Effects 0.000 claims abstract description 210
- 238000012217 deletion Methods 0.000 claims description 105
- 230000037430 deletion Effects 0.000 claims description 105
- 230000004044 response Effects 0.000 claims description 72
- 239000003607 modifier Substances 0.000 claims description 48
- 238000003860 storage Methods 0.000 claims description 35
- 238000013500 data storage Methods 0.000 claims description 30
- 230000008859 change Effects 0.000 claims description 24
- 239000000284 extract Substances 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 26
- 230000000694 effects Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 241001269238 Data Species 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000012827 research and development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式提供了一种缓存服务器中数据更新的控制方法。该方法例如可以包括:响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的该数据的数据信息中获取该数据的当前数据状态作为第一数据状态;响应于确定第一数据状态表示缓存服务器对该数据当前正在执行数据更新动作,控制缓存服务器拒绝对该数据执行该操作对应的目标数据更新动作。通过由数据状态来控制缓存服务器中数据更新动作的执行,本发明的方法可以显著地降低在底层数据库服务器与缓存服务器中数据副本不一致的发生几率,为用户带来了更好的体验。此外,本发明的实施方式提供了一种缓存服务器中数据更新的控制设备。
Description
技术领域
本发明的实施方式涉及数据处理领域,更具体地,本发明的实施方式涉及一种缓存服务器中数据更新的控制方法和设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
在例如整个互联网中,由于大量用户同时在线,网络应用服务产品的底层数据库需要能够同时满足大量用户对数据的操作请求,并且还需要保证用户响应时间较短。由于底层数据库服务器的数据在一次更新之后会被用户多次读取,为了提高数据读取速度以及减小对用户读取数据操作的响应时间,底层数据库服务器会将用户需要读取的数据存入外部的缓存服务器,用户在读取数据时是从性能更加强大的缓存服务器中读取。
对于由缓存服务器和底层数据库服务器组成的数据库系统,同一数据在底层数据库服务器和缓存服务器中各具有一个副本,所以,在用户对底层数据库服务器中数据的副本进行更新的操作时也需要更新缓存服务器中同一数据的副本,这样才能保证缓存服务器和底层数据库服务器中同一数据的副本一致,从而保证在用户读取数据时缓存服务器所提供的数据与底层数据库服务器中的数据一致。
为了保证缓存服务器中数据与底层数据库服务器中数据相一致,现有技术中最常用的方法是:根据用户对数据的操作,立即更新底层数据库服务器中的数据,并根据底层数据库服务器中数据的更新情况来更新缓存服务器中的数据。其中,数据更新动作可以包括数据存储、数据更改和/或数据删除;数据存储是指存入原先不存在的新数据,而数据更改是指将在已存储的数据中将原存储的内容替换为新的内容。
发明内容
但是,由于大量用户同时对数据进行操作,同一条数据常常存在多个并发操作,也即,多个用户同时对同一条数据进行多个操作。当出现对同一条数据的大量并发操作时,现有技术中对每一个并发操作都会根据底层数据库服务器中的数据更新动作来完成缓存服务器中的数据更新动作,而各个并发操作触发的缓存服务器数据更新动作是同时对同一条数据进行的,也即,缓存服务器中各个并发的数据更新动作是不加区分地同时进行和完成的,这样,各个并发的数据更新动作之间就会由于彼此完成情况的干扰影响而导致两个服务器中同一数据的数据副本不一致。例如,假设当前具有两个并发的操作,一个操作(第一操作)是要对底层数据库服务器中的目标数据执行数据更改并将对缓存服务器中的目标数据执行数据删除,另一个操作(第二操作)是要将底层数据库服务器中的目标数据储存到缓存服务器中,则当这两个操作同时进行数据更新动作时,如果第一操作在第二操作对底层数据库服务器中的目标数据更改之前从底层数据库服务器提取了目标数据,又在第二操作对缓存服务器中的目标数据删除之后将提取的目标输入储存到缓存服务器,则第一操作和第二操作所对应的数据更新互相之间就产生了干扰,这样就会使得底层数据库服务器中的目标数据与缓存服务器中的目标数据不一致。
因此,在现有技术中由于缓存服务器对同一数据的所有并发操作触发的数据更新过程都不加区分地同时进行并完成,就会使得各个并发的数据更新动作受到彼此完成情况之间的干扰影响,从而使得底层数据库服务器与缓存服务器中同一数据的数据副本不一致的情况具有很高的发生几率。
为此,非常需要一种改进的缓存服务器中数据更新的控制方法和设备,以避免对同一数据的所有并发操作缓存服务器都不加区分地同时进行并完成数据更新,从而避免每个数据更新的完成情况都会受到其他所有并发的数据更新的完成情况的干扰影响而减小底层数据库服务器与缓存服务器中同一数据的数据副本不一致的发生几率。
在本上下文中,本发明的实施方式期望提供一种缓存服务器中数据更新的控制方法和设备。
在本发明实施方式的第一方面中,提供了一种缓存服务器中数据更新的控制方法,例如可以包括:响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的;响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。
在本发明实施方式的第二方面中,提供了一种缓存服务器中数据更新的控制设备,例如可以包括:第一获取模块,用于响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的;第一控制模块,用于响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。
根据本发明实施方式中缓存服务器中数据更新的控制方法和设备,由于在缓存服务器中保存的数据信息中为数据根据缓存服务器对该数据当前正在执行的数据更新动作而设置了数据状态,当用户对底层数据库服务器中的数据触发操作时,可以通过此时该数据在缓存服务器中的当前数据状态来判断缓存服务器中该数据的数据更新动作的执行情况,从而在此时的当前数据状态表示缓存服务器对该数据当前正在执行数据更新动作时,可以控制缓存服务器拒绝执行该操作对应的目标数据更新动作,这样,当存在多个对同一数据的并发操作时,就可以使得各个操作对应的目标数据更新动作在缓存服务器当前正在对该数据执行其他数据更新动作时被拒绝执行,从而就可以避免缓存服务器对同一数据的所有并发操作触发的数据更新过程都不加区分地同时进行并完成,避免在缓存服务器中同时执行具有导致两个数据副本不一致风险的并发数据更新动作,从而减少未被拒绝的数据更新动作所受到的干扰影响,从而减少了同一数据在底层数据库服务器与缓存服务器中的数据副本不一致的发生几率,并减少了响应用户的数据操作时响应错误的次数,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了适于实现本发明实施方式的示例性计算系统100的框图;
图2示意性地示出了本发明的实施方式的一个示例性应用场景的框架示意图;
图3示意性地示出了本发明中缓存服务器中数据更新的控制方法一实施例的流程图;
图4示意性地示出了本发明的控制方法一实施例中的一种执行目标数据更新动作的实施方式的流程图;
图5示意性地示出了本发明中缓存服务器中数据更新的控制方法又一实施例的流程图;
图6示意性地示出了本发明的控制方法又一实施例中的又一种实施方式的流程图;
图7示意性地示出了本发明中缓存服务器中数据更新的控制方法再一实施例的流程图;
图8示意性地示出了本发明的控制方法再一实施例中的一种步骤705的实施方式的流程图;
图9示意性地示出了本发明中缓存服务器中数据更新的控制方法又再一实施例的流程图;
图10示意性地示出了本发明中缓存服务器中数据更新的控制方法又再一实施例的流程图;
图11示意性地示出了本发明中缓存服务器中数据更新的控制设备一实施例的结构示意图;
图12示意性地示出了本发明中控制设备一实施例中的一种第一获取模块1101的结构框图;
图13示意性地示出了本发明中缓存服务器中数据更新的控制设备又一实施例的结构示意图;
图14示意性地示出了本发明中缓存服务器中数据更新的控制设备再一实施例的结构示意图;
图15示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图;
图16示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图;
图17示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图;
图18示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图;
图19示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图;
图20示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图;
图21示意性地示出了本发明中缓存服务器中数据更新的控制设备又再一实施例的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算系统100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法的流程图和设备(或系统)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本发明的实施方式,提出了一种控制缓存服务器中数据更新的方法和设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在大量用户触发对同一数据的并发操作时,现有技术中底层数据库服务器与缓存服务器中数据副本不一致的发生几率高,是因为对缓存服务器中该数据的所有并发的数据更新动作会不加区分地同时进行。由于各个并发的数据更新动作需要的执行速度、完成时间都不同,这样就会造成很多后执行的数据更新动作在前执行的数据更新动作完成之前完成,从而使得每个数据更新动作的完成情况都会受到其他所有并发的数据更新动作的完成情况的干扰影响,从而造成两个服务器中的数据副本不一致的情况具有很高的发生几率。因此,为了解决这一问题,在出现对同一数据的多个并发操作时,就需要尽量避免在缓存服务器中对该数据同时执行具有导致两个服务器中数据副本不一致风险的并发数据更新动作。
基于上述发现,本发明的基本思想是:在缓存服务器中保存的每个数据的数据信息中设置一个数据状态,用来表示缓存服务器对该数据当前正在执行的数据更新动作的执行情况;当用户对底层数据库服务器中该数据触发操作时,通过该数据当前在数据信息中的数据状态来判断缓存服务器中该数据的数据更新动作的执行情况,并在当前的数据状态表示缓存服务器对该数据当前正在执行数据更新动作时,控制缓存服务器拒绝执行该操作对应的目标数据更新动作。这样,由于每次触发数据更新动作时都通过数据状态的判断来实现在缓存服务器中当前对该数据正在执行其他数据更新动作时拒绝执行本次的目标数据更新动作,就可以避免对同一数据在缓存服务器中同时执行具有导致两个服务器中同一数据的数据副本不一致风险的数据更新动作,从而避免未被拒绝的数据更新动作受到的干扰影响,从而减少了同一数据在底层数据库服务器与缓存服务器中的数据副本不一致的发生几率。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图2,图2是本发明的实施方式的一个示例性应用场景的框架示意图。其中,用户通过用户界面交互设备(例如客户端202)与控制服务器201进行交互,该控制服务器201分别与底层数据库服务器203、缓存服务器204进行交互,从而实现客户端202与底层数据库服务器203和缓存服务器204进行对数据的交互。本领域技术人员可以理解,图2所示的框架示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受到该框架任何方面的限制。
需要注意的是,此处的客户端202可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线或无线连接(例如,Wi-Fi、LAN、WAN、因特网等)与控制服务器201交互的任何客户端,包括但不限于:现有的、正在研发的或将来研发的、台式计算机、膝上型计算机、移动终端(包括智能手机、非智能手机、各种平板电脑)等。
还需要注意的是,此处的控制服务器201、底层数据库服务器203和缓存服务器204都仅是现有的、正在研发的或将来研发的、能够向用户提供具有数据库系统的网络产品应用的设备的一个示例。本发明的实施方式在此方面不受任何限制。
在图2所示的示例性应用场景中,控制服务器201可以响应于用户对底层数据库服务器203中数据的操作,从缓存服务器204中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器204对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的。然后控制服务器201可以响应于确定所述第一数据状态表示所述缓存服务器204对所述数据当前正在执行数据更新动作,控制所述缓存服务器204拒绝对所述数据执行所述操作对应的目标数据更新动作。需要说明的是,此处的用户对底层数据库服务器203中数据的操作例如可以是用户通过点击客户端202提供的、用于触发数据库系统数据应用服务的快捷链接而发送至控制服务器201的指令。根据本发明的某些示例性实施方式,所述数据应用服务例如可以读取数据库系统中的数据而显示在客户端202上。
需要注意的是,虽然此处将本发明实施方式的动作描述为由控制服务器201执行,但是这些动作也可以由客户端202执行,或者也可以由底层数据库服务器203来执行,或者也可以由缓存服务器204来执行,当然也可以由客户端202、控制服务器201、底层数据库服务器203和缓存服务器204分别执行一部分动作,或者也可以是由客户端202、底层数据库服务器203和缓存服务器204分别执行一部分动作。本发明在执行主体方面不受限制,只要执行了本发明实施方式所公开的动作即可。
示例性方法
下面结合图2的应用场景,参考图3来描述根据本发明示例性实施方式的用于控制缓存服务器中数据更新的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
参见图3,示出了本发明中缓存服务器中数据更新的控制方法一实施例的流程图,本实施例例如具体可以包括:
步骤301、响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的。
其中,所述数据的数据信息可以是在缓存服务器中与该数据对应保存的信息,例如可以包括该数据的特征码和该数据的当前数据状态,特征码可以用于区分各个数据以及与底层数据库服务器中的数据对应,例如可以是字符串或可以是数字,当前数据状态可以是一个允许修改的值,用于在每次缓存服务器对该数据的数据更新动作的执行情况发生变化时,对应地修改数据状态的值,例如,当前数据状态的值为Empty时表示缓存服务器中没有该数据,如果缓存服务器要存储该数据时当前数据状态的值可以修改为Mock。例如,采用如memcached(一种分布式内存的缓存系统)或redis(一种分布式内存的缓存系统)的KV系统(Key Value,数据带有特征码和状态值的数据库)的缓存服务器,每条数据除了数据内容可以包括Key和Value两部分,其中Key为该条数据的特征码,Value值为该条数据的当前数据状态。
在本实施例中,需要根据缓存服务器对数据当前正在执行的数据更新动作的执行情况来设置该数据的当前数据状态,这样才能实现通过当前数据状态来确定该缓存服务器对该数据是否正在进行数据更新动作。例如,可供设置的当前数据状态可以包括:空置状态(Empty)、已存储状态(Cache)、存储中状态(Mock)、删除中状态(Deleting)和已删除状态(Deleted)。其中,空置状态表示在缓存服务器中不存在该数据,已储存状态表示该数据已经存储在缓存服务器中,存储中状态表示缓存服务器正在存储该数据,删除中状态表示缓存服务器中正在删除该数据,已删除状态表示缓存服务器完成对该数据的删除。可以理解的是,上述的五种状态中,空置状态和已储存状态属于完成状态,是在缓存服务器当前未对数据执行数据更新动作时的状态,也可以被认为是数据更新动作完成以后的状态;而存储中状态、删除中状态、已删除状态属于中间状态,是在缓存服务器当前对数据正在执行数据更新动作时的状态,其中,已删除状态表示的是刚刚完成数据删除的瞬间,作用是将删除中状态过渡至空置状态,因此对于数据删除的目标数据更新动作来说,已删除状态并不是表示其执行完成的数据状态,而是属于表示其正在执行的一种数据状态。当然,也可以不设置已删除状态,而是在完成数据删除时直接设置成空置状态。
在采用特征码来区分数据而实现将缓存服务器中数据和底层数据库中的数据对应起来的实施方式中,获取当前数据状态可以是根据特征码来查找。具体地,步骤301例如可以具体包括:响应于用户对底层数据库服务器中数据的操作,从底层数据库服务器中获取所述数据的特征码;根据所述特征码,在所述缓存服务器中查找所述数据的当前数据状态,作为第一数据状态。其中,查找当前数据状态可以是先查找缓存服务器中所述特征码所在的数据信息,然后再从所述数据信息中提取当前数据状态。
需要说明的是,例如采用前述的五种可供设置的当前数据状态时,当前数据状态为空置状态则说明缓存服务器中没有该数据,则可以在缓存服务器中为所有查找不到对应数据的特征码保存一个对应的数据信息,其中的当前数据状态可以固定为空置状态,这样可以使根据没有对应数据的特征码也能够查找到对应的数据信息并获取对应的当前数据状态。当然,或者也可以不设置空置状态所在的数据信息,而是在查找不到特征码对应的数据信息时直接将当前数据状态确定为空置状态。
另外,在本实施例中,用户对底层数据库服务器中数据的操作,可以是读取数据的操作,或者也可以是更改数据或删除数据等更新数据的操作。需要说明的是,对底层数据库服务器中数据的操作可以不等同于对缓存服务器中数据的目标数据更新动作。例如,用户读取底层数据库服务器中的数据时,缓存服务器对该数据要执行的目标数据更新动作可以是对该数据进行数据储存;又如,用户更改或删除底层数据库服务器中的数据时,缓存服务器对该数据要执行的目标数据更新动作可以是对该数据进行数据删除;再如,用户将新数据存储到底层数据库服务器中时,缓存服务器可以不对该数据执行任何数据更新动作。可以理解的是,由于缓存服务器是用于在用户读取数据的时候向用户提供数据,所以其可以在数据存储到底层数据库服务器中时不对该数据进行存储,而是在用户需要读取的时候再去存储该数据,也正是由此,在底层数据库服务器中对数据内容进行更改时缓存服务器可以是将该数据删除。
步骤302、响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。
在本实施例中,在步骤301中获取了第一数据状态之后,需要对该第一数据状态进行识别,以根据第一数据状态来确定该数据在缓存服务器中当前正在执行的数据更行动作的执行情况,从而在确定缓存服务器对该数据当前正在执行数据更新动作时执行步骤302。
例如,采用前述可供设置的当前数据状态时,属于中间状态的存储中状态、删除中状态、已删除状态即表示缓存服务器对数据当前正在执行数据更新动作,而属于完成状态的空置状态和已储存状态则表示缓存服务器当前未对数据执行任何数据更新动作。在对第一数据状态进行识别时,即为确定第一数据状态是何种可供设置的当前数据状态,如果第一数据状态是中间状态中的一种数据状态,则执行步骤302使缓存服务器拒绝本次目标数据更新动作。
需要说明的是,步骤301之后,如果识别出第一数据状态表示的是缓存服务器当前未对该数据执行任何数据更新动作,可以控制缓存服务器执行本次的目标数据更新状态,或者,也可以只在第一数据状态属于某些或某种特定的数据状态时才控制缓存服务器执行本次的目标数据更新动作。由于不同的数据更新动作都是对应于数据在缓存服务器中的特定的存储状态来触发的,所以,即使第一数据状态表示的是缓存服务器当前未对该数据执行任何数据更新动作,而缓存服务器当前的存储状态也可能不适合目标数据更新动作的执行。例如,缓存服务器当前并未存储该数据,所获取的第一数据状态为空置状态,如果目标数据更新动作为数据删除,则由于删除的对象不存在,缓存服务器是无法执行该目标数据更新动作的;又如,缓存服务器当前正存储着该数据,所获取的第一数据状态为已储存状态,如果目标数据更新动作为数据储存,则由于再对该数据存储一次不仅是没有意义的而且还会造成缓存服务器存储数据及执行动作的负担加重等问题,缓存数据服务器也是没有必要执行该目标数据更新动作的。
为了解决上述问题,本实施例中提供了一种实施方式来执行目标数据更新动作,参见图4所示,在步骤301执行完成之后,本实施例例如还可以包括:
步骤401、响应于确定所述第一数据状态属于触发执行所述操作对应的所述目标数据更新动作的数据状态,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作正在执行的数据状态,并控制所述缓存服务器对所述数据执行所述目标数据更新动作。
其中,触发执行目标数据更新动作的状态表示的可以是该数据在缓存服务器目前的存储状态适合触发目标数据更新动作的执行,并且,该状态需要是不属于表示缓存服务器对所述数据当前正在执行数据更新动作的数据状态。例如,如果目标数据更新动作是数据存储,则触发执行目标数据更新动作的状态可以是表示在缓存服务器中未存储该数据的空置状态,如果目标数据更新动作是数据删除,则触发执行目标数据更新动作的状态可以是表示在缓存服务器中已经存储该数据的已储存状态。
本实施方式中,如果第一数据状态属于触发执行目标数据更新动作的状态,还需要在控制缓存服务器执行本次的目标数据更新动作之前将该数据的当前数据状态修改为表示目标数据更新动作正在执行的数据状态,这样可以使得在本次目标数据更新动作执行的过程中,对该数据的其他后续数据更新动作可以进入步骤302被拒绝,从而进一步保证在当前只对该数据执行本次目标数据更新动作。其中,表示目标数据更新动作正在执行的数据状态,例如在目标数据更新动作是数据存储时可以是存储中状态,又如在目标数据更新动作是数据删除时可以是删除中状态。
另外,如果目标数据更新动作是数据存储,则控制所述缓存服务器对所述数据执行目标数据更新动作可以具体包括:从底层数据库服务器中提取所述数据,并将所述数据储存到所述缓存服务器中;如果目标数据更新动作是数据删除,则控制所述缓存服务器对所述数据执行目标数据更新动作可以具体包括:将所述数据从所述缓存服务器中删除。
步骤402、响应于所述目标数据更新动作的完成,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作执行完成的数据状态。
其中,表示目标数据更新动作执行完成的数据状态,例如在目标数据更新动作是数据存储时可以是已储存状态,又如在目标数据更新动作是数据删除时可以是空置状态。在本步骤402中,在执行数据删除之后,可以是将删除中状态的当前数据更新状态直接修改为空置状态,或者,也可以是将删除中状态的当前数据状态先修改为已删除状态,然后再进一步修改为空置状态。
需要说明的是,在本实施方式中,如果在步骤401中将当前数据状态修改为表示目标数据更新动作正在执行的数据状态之后客户端201异常宕机,则会导致该数据的当前数据状态一直处于表示目标数据更新动作正在执行的数据状态,这样就会造成对该数据的后续数据更新动作都将被拒绝。因此,为了避免由客户端201异常宕机所引起的对该数据的后续数据更新动作都无法执行,本实施例中还可以为各种表示目标数据更新动作正在执行的数据状态设置超时时间阈值,如果当前数据状态停留在各种表示目标数据更新动作正在执行的数据状态的时间超过了该数据状态的超时时间阈值,则可以取消本次目标数据更新动作的执行,并将该数据的当前数据状态重新修改为其触发执行目标数据更新动作的状态。其中,可以为存储中状态和删除中状态设置较长的超时时间(例如大于底层数据库服务器中对数据的操作的超时时间),使得缓存服务器有充裕的时间完成目标数据更新动作;可以为已删除状态设置较短的超时时间,使得删除中状态可以很快地过渡到空置状态。
在本实施方式中,除了可以完成对缓存服务器中的数据执行目标数据更新动作,还可以接着完成前述用户对底层数据库服务器中数据的操作。例如,如果该操作是读取数据的操作,则可以在步骤301执行完成之后响应于确定第一数据状态属于已储存状态时从缓存服务器中读取数据给用户,或者,也可以在步骤401执行完成之后从缓存服务器中读取数据给用户,或者,还可以在步骤301执行完成之后响应于确定第一数据状态属于存储中状态、删除中状态或已删除状态时从底层数据库服务器中读取数据给用户。由此可以保证用户读取的数据与底层数据库服务器中的数据一致。又如,如果该操作是更改或删除数据的操作,则可以在步骤401执行完成之后,根据该操作来更改或删除底层数据库服务器中的数据。由此可以保证底层数据库服务器与缓存服务器中同一数据的两个数据副本相一致。
通过本实施方式的技术方案,由于被允许执行的目标数据更新动作会在执行之前将当前数据状态修改为表示其正在执行的数据状态,使得其执行过程中后续数据更新动作都将被拒绝,从而可以使得其执行过程不被其他数据更新动作的执行情况所干扰,从而进一步减少了同一数据在底层数据库服务器与缓存服务器中的数据副本不一致的发生几率。
接着返回图3。
在本实施例的各个步骤执行的同时,还可以采用原子操作命令来保证缓存服务器对数据的目标数据更新动作以及对当前数据状态的修改都是在单独进行的原子操作,即各动作执行期间缓存服务器没有对该数据执行过其他数据更新或数据状态修改的动作。例如,原子操作命令可以是比较替换(Compare And Swap,CAS)命令,对于空置状态则可以是加载(Add)命令。
通过本实施例的技术方案,由于每次触发数据更新动作时都通过数据状态的判断来实现在缓存服务器中当前对该数据正在执行其他数据更新动作时拒绝执行本次的目标数据更新动作,就可以避免对同一数据在缓存服务器中同时执行具有导致两个服务器中同一数据的数据副本不一致风险的数据更新动作,从而避免未被拒绝的数据更新动作受到的干扰影响,从而减少了同一数据在底层数据库服务器与缓存服务器中的数据副本不一致的发生几率。另外,由于数据副本不一致的发生几率减小,响应用户的数据操作时响应错误的次数也会随之减小,从而可以为用户带来更好的体验。
前述的方法实施例是基于各种不同的目标数据更新动作来说明的。为了使本领域技术人员更清楚地理解各目标数据更新动作的实现情况,下面将分别就一种目标数据更新动作来说明本发明实施例的实现方式。
参见图5,示出了本发明中缓存服务器中数据更新的控制方法又一实施例的流程图。本实施例中的数据状态可以采用前述实施例中介绍的可供设置的数据状态,其中,目标数据更新动作为数据存储,所对应的用户对底层数据库服务器中的操作为读取数据的操作,触发执行所述操作对应的所述目标数据更新动作的数据状态为空置状态,表示所述目标数据更新动作正在执行的数据状态为存储中状态,表示所述目标数据更新动作执行完成的数据状态为已储存状态。本实施例例如可以包括如下步骤:
步骤501、响应于用户对底层数据库服务器中数据的读取操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的。
本实施例中,在步骤501获取第一数据状态之后,可以对第一数据状态进行识别来确定接下来执行哪些步骤。例如,响应于确定第一数据状态属于存储中状态、删除中状态或已删除状态,则可以进入步骤502;又如,响应于确定第一数据状态属于空置状态则可以进入步骤503;再如,响应于确定第一数据状态属于已储存状态,则还可以直接从所述缓存服务器中读取所述数据,并且控制缓存服务器拒绝本次的目标数据存储动作。
在对第一数据状态进行识别时,可以先判断第一数据状态是否属于已储存状态,如果是则可以直接从缓存服务器中读取数据给用户,如果否则可以利用Add命令为该数据的当前数据状态加载存储中状态,如果第一数据状态属于存储中状态、删除中状态或已删除状态则加载就会失败,也即执行了步骤502,如果第一数据状态属于空置状态则加载可以成功,也即可以执行步骤503。
步骤502、响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述读取操作对应的目标数据存储动作。
其中,表示缓存服务器对该数据当前正在执行数据更新动作的数据状态可以包括存储中状态、删除中状态和已删除状态,或者,在没有已删除状态的情况下可以包括存储中状态和删除中状态。
步骤503、响应于确定所述第一数据状态属于空置状态,在所述数据信息中将所述数据的当前数据状态修改为存储中状态。
其中,采用Add命令来加载存储中状态时,如果加载成功,就完成了将该数据的当前数据状态修改为存储中状态的动作。
需要说明的是,即使第一数据状态属于空置状态,Add命令的加载也可能由于其他原因失败,比如在获取第一数据状态之后缓存服务器在对目标数据存储动作加载Add命令的同时执行了其它的数据更新动作;而在加载失败时,本实施例中还可以控制缓存服务器拒绝对该数据执行该目标数据存储动作。
步骤504、从底层数据库服务器中提取所述数据,并将所述数据储存到所述缓存服务器中。
步骤505、响应于所述目标数据存储动作的完成,在所述数据信息中将所述数据的当前数据状态修改为已储存状态。
需要说明的是,步骤503执行完成之后,在步骤504和步骤505执行数据存储、数据状态修改的过程中,缓存服务器依然有可能执行完成了某个或某些并发的数据更新动作。为了进一步保证步骤504和步骤505在对该数据执行目标数据存储动作的过程中排除其他同时并发的数据更新动作,本实施例中提供了一种实施方式来解决这一问题。参见图6所示,本实施方式可以是在步骤503执行完成以后,进入以下步骤:
步骤601、在所述数据信息中再次获取所述数据在所述缓存服务器中的当前数据状态,作为第二数据状态;
虽然步骤503已将当前数据状态修改为存储中状态,但是由于数据更新动作的并发是随时都可能会出现的,所以,再次获取的第二数据状态就可能由于其他数据更新动作的执行而不再是存储中状态。当然,这一段时间内如果没有并发的数据更新动作出现则再次获取的第二数据状态通常依然是存储中状态。
步骤602、响应于确定所述第二数据状态不属于删除中状态和已删除状态,进入步骤504。
在本实施方式中,如果第二数据状态属于删除中状态或已删除状态,则表明缓存服务器当前正在执行对该数据的删除,且底层数据库服务器中当前正在执行对该数据的删除或者更改,所以,底层数据库服务器中的数据内容可能已经不再是本次目标数据存储动作所要存储的数据内容,则还可以在此时控制缓存服务器中拒绝本次的目标数据存储动作。
需要说明的是,为保证步骤503执行完成之后至步骤505执行完成的这段时间缓存服务器只执行本次目标数据存储动作,本实施方式还可以在执行目标数据存储动作时采用CAS命令来执行原子操作。具体地CAS命令的实施方式可以是:为各个数据的当前数据状态设置一个版本号,每次修改当前数据状态时版本号执行加1;在步骤601获取当前数据状态作为第二数据状态的同时获取第二数据状态对应的版本号作为开始版本号,然后执行后续步骤,在执行步骤505时判断该数据的当前数据状态的版本号是否与开始版本号相同,如果是则可以完成步骤505,如果否则可以返回步骤601重新获取第二数据状态和开始版本号,直至步骤505执行时该数据的当前数据状态的版本号与开始版本号相同而完成步骤505,或者,直至第二数据状态属于删除中状态或已删除状态而不执行步骤504和步骤505。
接着返回图5。
通过本实施例的技术方案,可以进一步排除目标数据存储动作的执行过程中并发的数据更新动作,使得目标数据存储动作的执行过程中缓存服务器只执行本次的目标数据存储动作,从而可以实现多个客户端对同一个数据触发并发操作的情况下缓存服务器中只执行目标数据存储动作这一个数据更新动作,从而实时地保证同一个数据在底层数据库服务器与缓存服务器中的两个数据副本相一致。
图5所示的方法实施例中是本发明针对于目标数据更新动作为数据存储动作的一种实施方式。下面结合图7,详细说明本发明针对于目标数据更新动作为数据删除的一种实施方式。
参见图7,示出了本发明中缓存服务器中数据更新的控制方法再一实施例的流程图。本实施例中的数据状态可以采用前述实施例中介绍的可供设置的数据状态,其中,目标数据更新动作为数据删除,所对应的用户对底层数据库服务器中的操作为更改或删除所述数据的操作,触发执行所述操作对应的所述目标数据更新动作的数据状态为已储存状态,表示所述目标数据更新动作正在执行的数据状态为删除中状态,表示所述目标数据更新动作执行完成的数据状态为空置状态。本实施例例如可以包括如下步骤:
步骤701、响应于用户对底层数据库服务器中更改或删除数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的。
本实施例中,在步骤701获取第一数据状态之后,可以对第一数据状态进行识别来确定接下来执行哪些步骤。例如,响应于确定第一数据状态属于存储中状态、删除中状态或已删除状态,则可以进入步骤702;又如,响应于确定第一数据状态属于已储存状态则可以进入步骤703。
步骤702、响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据删除动作。
其中,表示缓存服务器对该数据当前正在执行数据更新动作的数据状态可以包括存储中状态、删除中状态和已删除状态,或者,在没有已删除状态的情况下可以包括存储中状态和删除中状态。
步骤703、响应于确定所述第一数据状态属于已储存状态,在所述数据信息中将所述数据的当前数据状态修改为删除中状态,并将所述数据从所述缓存服务器中删除。
步骤704、根据所述操作,更改或删除底层数据库服务器中所述数据。
需要说明的是,步骤704是本实施例中一个进一步可以增加的步骤,而不是必须执行的步骤。由于本实施例的技术方案是为了实现对缓存服务器中数据更新进行控制,因此本实施例可以不限定底层数据库服务器中的数据更新动作是否执行或者在何时执行,也即,在步骤703执行完成之后,也可以执行步骤705。但是,为了能够使其他数据更新动作即使在本次用户触发的数据操作执行过程的同时也被并发执行,可以优选在步骤703之后来执行步骤704的实施方式。
步骤705、响应于所述目标数据删除动作的完成,在所述数据信息中将所述数据的当前数据状态修改为空置状态。
其中,步骤705在执行状态修改时可以是先将当前数据状态修改为已删除状态,然后再修改为空置状态。
需要说明的是,本实施例中,即使进入步骤702在缓存服务器中拒绝了本次的目标数据删除动作,或者即使第一数据状态为空置状态而使得缓存服务器无需执行目标数据删除动作,一般也需要在底层数据库服务器中对该数据进行更改或删除的操作,因此,为了防止在底层数据库服务器中更新数据的时候其他并发数据更新在缓存服务器中执行而导致两个服务器中的数据副本不一致,在确定第二数据状态属于已删除状态或删除中状态时,还可以将当前数据状态修改为删除中状态,然后再进入步骤704,这样可以防止在缓存服务器中执行其他并发的数据更新动作。另外,在确定第二数据状态属于存储中状态时,为了保证两个服务器中数据副本一致,可以返回步骤701再次获取第一数据状态,以便等待缓存服务器对该数据当前执行的存储动作完成再执行对本次的目标数据删除动作。
在上述实施方式针对于不同的第一数据状态执行不同的后续步骤时,为保证步骤701至第一数据状态被修改完成的这段时间缓存服务器不执行其他数据更新动作,本实施例还可以在执行第一数据状态时采用CAS命令来执行原子操作,具体的实施方式可以是:为各个数据的当前数据状态设置一个版本号,每次修改当前数据状态时版本号执行加1的;在步骤701获取当前数据状态作为第一数据状态的同时获取第一数据状态对应的版本号作为开始版本号,然后根据第一数据状态来执行不同的状态修改,在执行状态修改时判断该数据的当前数据状态的版本号是否与开始版本号相同,如果是则可以完成状态修改,如果否则可以返回步骤701重新获取第一数据状态和开始版本号,直至状态修改时该数据的当前数据状态的版本号与开始版本号相同而完成状态修改。其中,当第一数据状态为空置状态时,由于此时第一数据状态是没有版本号的,因此可以采用Add命令来进行加载删除中状态;当CAS命令或Add命令失败时(例如第一数据状态为存储中状态时会导致失败),则也返回步骤701重新获取第一数据状态和开始版本号。需要说明的是,由于多个并发数据删除动作会导致该数据的执行多次状态修改,对应在底层数据库服务器中的数据更新也会有多次,在采用CAS或Add命令时需要区分各个数据删除动作对应的状态,为此,可以为各个数据的删除中状态计数,当第一数据状态为空置状态、已储存状态、已删除状态时,修改后的删除中状态计数值为1,当第一数据状态已经为删除中状态时,可以将删除中状态计数值做加1的处理。
由于上述实施方式在不同的第一数据状态可以执行不同的后续步骤,所以,步骤705在将删除中状态修改为已删除状态之后,可能会又被其他并发的数据删除动作修改为删除中状态,为此,步骤705可以采用如图8所示的流程图来完成:
步骤801、在所述数据信息中再次获取所述数据的当前数据状态,作为第三数据状态;
步骤802、响应于确定所述第三数据状态属于删除中状态,在所述数据信息中将所述数据的当前数据状态修改为已删除状态,并返回步骤801;
步骤803、响应于确定所述第三数据状态属于已删除状态,在所述数据信息中将所述数据的当前数据状态修改为空置状态。
需要说明的是,在上述步骤705的实施方式中,为保证步骤705执行过程中的这段时间缓存服务器不执行其他数据更新动作,本实施例同样还可以在执行第三数据状态时采用CAS命令来执行原子操作,具体的实施方式可以是:为各个数据的当前数据状态设置一个版本号,每次修改当前数据状态时版本号执行加1的;在步骤801获取当前数据状态作为第三数据状态的同时获取第三数据状态对应的版本号作为开始版本号,然后在执行步骤802和步骤803时判断该数据的当前数据状态的版本号是否与开始版本号相同,如果是则可以完成该步骤,如果否则可以返回步骤801重新获取第三数据状态和开始版本号,直至状态修改时该数据的当前数据状态的版本号与开始版本号相同而完成状态修改。其中,如果CAS命令失败,则也可以返回步骤801重新获取第三数据状态和开始版本号。
另外,如果为删除中状态设置了计数值,则在步骤705的本实施方式中还需要对应地修改计数值,具体地,如果第三数据状态为删除中状态计数值大于1,则将计数值减1再返回步骤801重新获取第三数据状态,直至删除中状态计数值为1时再进入步骤802。
接着返回图7。
通过本实施例的技术方案,可以进一步排除目标数据删除动作的执行过程中并发的数据删除动作,使得目标数据删除动作的执行过程中缓存服务器只执行本次的目标数据删除动作,从而可以实现缓存服务器中在执行目标数据删除动作这一个数据更新动作时不执行其他的数据删除动作,从而实时地保证同一个数据在底层数据库服务器与缓存服务器中的两个数据副本相一致。
为了使本领域技术人员更清楚地理解本发明的实现方式,下面以具体地场景,通过两个场景实施例来对本发明中缓存服务器中数据更新的控制方法进行说明。在该场景中,可供设置的数据状态包括空置状态(Empty)、已储存状态(Cache)、存储中状态(Mock)、带有计数值n的删除中状态(Deleting-n)和已删除状态(Deleted)。需要说明的是,以下两个场景实施例是由前述实施例中各种优选实施方式组合而成,场景的相似之处可参见前述实施例,但是,本发明的实施方式包括并不仅限于以下的两个场景实施方式。
参见图9,示出了本发明中缓存服务器中数据更新的控制方法又再一实施例的流程图。本实施例是响应于用户对数据的读取操作而进行的实施方式,本实施例例如具体可以包括:
步骤901、从底层数据库服务器中获取数据的特征码。
步骤902、从缓存服务器中查找数据的第一数据状态:根据步骤901中获得的特征码,在所述缓存服务器中查找特征码对应的数据信息,并从查找到的数据信息中提取当前数据状态作为第一数据状态。
步骤903、判断第一数据状态是否为Cache,如果是则进入步骤912,如果否则进入步骤904。
步骤904、为当前数据状态加载(Add)Mock:如果加载成功,进入步骤906;如果加载失败,进入步骤905。
其中,当第一数据状态为Mock、Deleting-n或Deleted时加载失败。
需要说明的是,加载Mock也可以是步骤903中识别第一数据状态,在第一数据状态属于Empty时才进入步骤904,在第一数据状态属于Cache进入步骤912,并在第一数据状态属于其他状态时进入步骤905。
步骤905、返回失败信息:控制缓存服务器拒绝执行本次操作对应的目标数据存储动作。
步骤906、再次从缓存服务器中获取数据的第二数据状态及第二数据状态的CAS版本号。
步骤907、判断第二数据状态是否属于Deleting-n或Deleted:如果是进入步骤908,如果否进入步骤909。
步骤908、从底层数据库服务器中读取数据给用户。
步骤909、从底层数据库服务器中提取数据并储存到缓存服务器中:提取数据时根据特征码来提取。
步骤910、判断缓存服务器中当前数据状态的版本号是否与第二数据状态的版本号相同:如果是进入步骤911,如果否返回步骤906。
步骤911、将数据的当前数据状态修改为Cache,并将当前的版本号加1。
步骤912、从缓存服务器中读取数据给用户。
参见图10,示出了本发明中缓存服务器中数据更新的控制方法又再一实施例的流程图。本实施例是响应于用户对数据的更改或删除操作的实施方式,本实施例例如具体可以包括:
步骤1001、从底层数据库服务器中获取数据的特征码:响应用户对底层数据库服务器中数据的更改或删除操作来获取对应数据的特征码。
步骤1002、从缓存服务器中查找数据的第一数据状态和第一数据状态的CAS版本号。
其中,如果第一数据状态为空置状态,则无CAS版本号。
步骤1003、识别第一数据状态:根据识别结果,选择进入步骤1004~1008中的任意一个步骤。
步骤1004、如果第一数据状态属于Mock,等待一段时间返回步骤1002:其中,等待时间可以是预设的值。
步骤1005、如果第一数据状态属于Empty,为当前数据状态加载Deleting-1(计数值为1):成功完成之后进入步骤1009。
步骤1006、如果第一数据状态属于Deleted,利用CAS将当前数据状态修改为Deleting-1:成功完成之后进入1009。
步骤1007、如果第一数据状态属于Deleting-n,利用CAS将当前数据状态修改为Deleting-(n+1):成功完成之后进入1009。
步骤1008、如果第一数据状态属于Cache,利用CAS,将数据从缓存服务器中删除并将当前数据状态修改为Deleting-1:成功完成之后进入步骤1009。
需要说明的是,步骤1005~1008是在CAS命令或Add命令成功完成以后进入步骤1009,如果命令完成失败则需要返回步骤1002。例如,采用CAS命令完成步骤1006~1008时,在修改当前数据状态之前判断当前版本号是否与第一数据状态的版本号相同,如果是则完成修改,此时CAS命令成功,如果否则CAS命令失败,返回步骤1002。
步骤1009、更改或删除底层数据库服务器中的数据:根据用户触发的操作来执行。
步骤1010、再次从缓存服务器中获取数据的第三数据状态及第三数据状态的版本号。
步骤1011、识别第三数据状态:根据识别结果进入步骤1012~1014中的任意一个步骤。
步骤1012、如果第三数据状态属于Deleting-n且n大于1时,利用CAS命令将当前数据状态修改为Deleting-(n-1):成功完成之后返回步骤1010。
步骤1013、如果第三数据状态属于Deleting-1,利用CAS命令将当前数据状态修改为Deleted:成功完成之后,返回步骤1010。
需要说明的是,如果步骤1012和1013是在CAS命令失败以后,也需要返回步骤1010。
步骤1014、如果第三数据状态属于Deleted,将当前数据状态修改为Empty。
需要说明的是,本实施例中,在步骤1013成功完成之后可以等待时间达到Deleted的超时时间时返回步骤1010,或者,也可以不返回步骤1010,而是等待当前数据状态停滞在Deleted的时间超过超时时间自动转换为Empty。
由于上述两个场景实施例分别针对于目标数据更新为数据存储和目标数据更新为数据删除,因此,同时采用这两个场景实施例的技术方案,可以实时地保证底层数据库服务器与缓存服务器中同一数据的两个数据副本相一致,从而彻底解决并发操作所带来的数据副本不一致的问题。在同时实施时,可以先根据用户触发的数据操作从底层数据库中找到特征码,然后再根据特征码在缓存服务器中找到数据状态,然后再根据用户触发的操作来选择执行步骤903或步骤1003。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图11对本发明示例性实施方式的设备(例如,控制服务器)、用于缓存服务器中数据更新的控制一实施例的结构示意图,本发明示例性实施方式的设备,例如具体可以包括:
第一获取模块1101,用于响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的;
第一控制模块1102,用于响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。
其中,如图12所示,所述第一获取模块1101例如可以包括:
特征码获取子模块1201,用于响应于用户对底层数据库服务器中数据的操作,从底层数据库服务器中获取所述数据的特征码;
查找子模块1202,用于根据所述特征码,在所述缓存服务器中查找所述数据的当前数据状态,作为第一数据状态。
如图13所示,为本发明提供的缓存服务器中数据更新的控制设备又一实施例的结构示意图。除了图11所示的结构外,本实施例还可以包括:
第一修改模块1301,用于响应于确定所述第一数据状态属于触发执行所述操作对应的所述目标数据更新动作的数据状态,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作正在执行的数据状态;
第二控制模块1302,用于控制所述缓存服务器对所述数据执行所述目标数据更新动作;
第二修改模块1303,用于响应于所述目标数据更新动作的完成,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作执行完成的数据状态。
如图14所示,为本发明提供的缓存服务器中数据更新的控制设备再一实施例的结构示意图。除了图13所示的结构外,本实施例中,所述操作为读取数据的操作,所述目标数据更新动作为数据存储;所述触发执行所述操作对应的所述目标数据更新动作的数据状态为空置状态,所述空置状态表示在所述缓存服务器中不存在所述数据;所述表示所述目标数据更新动作正在执行的数据状态为存储中状态,所述存储中状态表示所述缓存服务器正在存储所述数据;所述表示所述目标数据更新动作执行完成的数据状态为已储存状态,所述已储存状态表示所述数据已经存储在所述缓存服务器中;
其中,所述第二控制模块1302例如可以包括:
提取子模块1401,用于从底层数据库服务器中提取所述数据;
储存子模块1402,用于将所述数据储存到所述缓存服务器中。
如图15所示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。除了图14所示的结构外,所述设备例如还可以包括:
第二获取模块1501,用于在所述数据信息中再次获取所述数据在所述缓存服务器中的当前数据状态,作为第二数据状态;
第一触发模块1502,用于响应于确定所述第二数据状态不属于删除中状态和已删除状态,触发所述第二控制模块1302;其中,所述删除中状态表示所述缓存服务器中正在删除所述数据,所述已删除状态表示所述缓存服务器完成对所述数据的删除。
如图16所示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。除了图14所示的结构外,所述设备例如还可以包括:
读取控制模块1601,用于响应于确定所述第一数据状态为已储存状态,从所述缓存服务器中读取所述数据,并控制缓存服务器拒绝所述目标数据存储动作。
同样如图17所示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。本实施例中,除了图13所示的结构中,具体地,所述操作为更改或删除所述数据的操作,所述目标数据更新动作为数据删除;所述触发执行所述操作对应的所述目标数据更新动作的数据状态为已储存状态,所述已储存状态表示所述数据已经存储在所述缓存服务器中;所述表示所述目标数据更新动作正在执行的数据状态为删除中状态,所述删除中状态表示所述缓存服务器中正在删除所述数据;所述表示所述目标数据更新动作执行完成的数据状态为空置状态,所述空置状态表示在所述缓存服务器中不存在所述数据;
所述第二控制模块1302,具体用于将所述数据从所述缓存服务器中删除。
如图18示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。除了图17示的结构外,所述设备还可以包括:
操作模块1801,用于在所述第二控制模块1302启动完成之后,根据所述操作,更改或删除底层数据库服务器中所述数据,并触发所述第二修改模块1303。
如图19所示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。除了图18所示的结构外,所述设备还可以包括:
第三修改模块1901,用于响应于确定所述第一数据状态属于空置状态,将所述数据的当前数据状态修改为删除中状态;
第二触发模块1902,用于在所述第三修改模块1901启动完成之后,触发所述操作模块1801。
如图20所示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。除了图18所示的结构外,所述设备还可以包括:
第四修改模块2001,用于响应于确定所述第一数据状态属于已删除状态,将所述数据的当前数据状态修改为删除中状态;
第三触发模块2002,用于在所述第四修改模块2001启动完成之后,触发所述操作模块1801。
如图21所示,为本发明提供的缓存服务器中数据更新的控制设备又再一实施例的结构示意图。除了图18所示的结构外,所述第二修改模块例如可以包括:
第三获取子模块2101,用于在所述数据信息中再次获取所述数据的当前数据状态,作为第三数据状态;
第五修改子模块2102,用于响应于确定所述第三数据状态属于删除中状态,在所述数据信息中将所述数据的当前数据状态修改为已删除状态;
第四触发子模块2103,用于在所述第五修改模块2102启动完成之后,触发所述第五修改模块,触发所述第三获取模块2101;
第六修改子模块2104,用于响应于确定所述第三数据状态属于已删除状态,在所述数据信息中将所述数据的当前数据状态修改为空置状态。
通过本发明中设备实施例的技术方案,由于每次触发数据更新动作时都通过数据状态的判断来实现在缓存服务器中当前对该数据正在执行其他数据更新动作时拒绝执行本次的目标数据更新动作,就可以避免对同一数据在缓存服务器中同时执行具有导致两个服务器中同一数据的数据副本不一致风险的数据更新动作,从而避免未被拒绝的数据更新动作受到的干扰影响,从而减少了同一数据在底层数据库服务器与缓存服务器中的数据副本不一致的发生几率。另外,由于数据副本不一致的发生几率减小,响应用户的数据操作时响应错误的次数也会随之减小,从而可以为用户带来更好的体验。
应当注意,尽管在上文详细描述中提及了缓存服务器中数据更新的控制设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (22)
1.一种方法,包括:
响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的;
响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。
2.根据权利要求1所述的方法,所述从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态,包括:
从底层数据库服务器中获取所述数据的特征码;
根据所述特征码,在所述缓存服务器中查找所述数据的当前数据状态,作为第一数据状态。
3.根据权利要求1所述的方法,还包括:
响应于确定所述第一数据状态属于触发执行所述操作对应的所述目标数据更新动作的数据状态,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作正在执行的数据状态,并控制所述缓存服务器对所述数据执行所述目标数据更新动作;
响应于所述目标数据更新动作的完成,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作执行完成的数据状态。
4.根据权利要求3所述的方法,所述操作为读取数据的操作,所述目标数据更新动作为数据存储;
所述触发执行所述操作对应的所述目标数据更新动作的数据状态为空置状态,所述空置状态表示在所述缓存服务器中不存在所述数据;
所述表示所述目标数据更新动作正在执行的数据状态为存储中状态,所述存储中状态表示所述缓存服务器正在存储所述数据;
所述表示所述目标数据更新动作执行完成的数据状态为已储存状态,所述已储存状态表示所述数据已经存储在所述缓存服务器中;
所述控制所述缓存服务器对所述数据执行目标数据更新动作,包括:从底层数据库服务器中提取所述数据,并将所述数据储存到所述缓存服务器中。
5.根据权利要求4所述的方法,所述在所述数据信息中将所述数据的当前数据状态修改为存储中状态之后,还包括:
在所述数据信息中再次获取所述数据在所述缓存服务器中的当前数据状态,作为第二数据状态;
响应于确定所述第二数据状态不属于删除中状态和已删除状态,进入所述从底层数据库服务器中提取所述数据并将所述数据储存到所述缓存服务器中的步骤;其中,所述删除中状态表示所述缓存服务器中正在删除所述数据,所述已删除状态表示所述缓存服务器完成对所述数据的删除。
6.根据权利要求4所述的方法,还包括:
响应于确定所述第一数据状态为已储存状态,从所述缓存服务器中读取所述数据,并控制缓存服务器拒绝所述目标数据存储动作。
7.根据权利要求3所述的方法,所述操作为更改或删除所述数据的操作,所述目标数据更新动作为数据删除;
所述触发执行所述操作对应的所述目标数据更新动作的数据状态为已储存状态,所述已储存状态表示所述数据已经存储在所述缓存服务器中;
所述表示所述目标数据更新动作正在执行的数据状态为删除中状态,所述删除中状态表示所述缓存服务器中正在删除所述数据;
所述表示所述目标数据更新动作执行完成的数据状态为空置状态,所述空置状态表示在所述缓存服务器中不存在所述数据;
所述控制所述缓存服务器对所述数据执行目标数据更新动作,具体为:将所述数据从所述缓存服务器中删除。
8.根据权利要求7所述的方法,所述将所述数据从所述缓存服务器中删除之后,还包括:
根据所述操作,更改或删除底层数据库服务器中所述数据,并进入在所述数据信息中将所述数据的当前数据状态修改为空置状态的步骤。
9.根据权利要求8所述的方法,还包括:
响应于确定所述第一数据状态属于空置状态,将所述数据的当前数据状态修改为删除中状态,并进入所述根据所述操作更改或删除底层数据库服务器中所述数据的步骤。
10.根据权利要求8所述的方法,还包括:
响应于确定所述第一数据状态属于已删除状态,将所述数据的当前数据状态修改为删除中状态,并进入所述根据所述操作更改或删除底层数据库服务器中所述数据的步骤。
11.根据权利要求7~10任意一项所述的方法,所述在所述数据信息中将所述数据的当前数据状态修改为空置状态,包括:
在所述数据信息中再次获取所述数据的当前数据状态,作为第三数据状态;
响应于确定所述第三数据状态属于删除中状态,在所述数据信息中将所述数据的当前数据状态修改为已删除状态,并返回所述在所述数据信息中再次获取所述数据的当前数据状态,作为第三数据状态的步骤;所述已删除状态表示所述缓存服务器完成对所述数据的删除;
响应于确定所述第三数据状态属于已删除状态,在所述数据信息中将所述数据的当前数据状态修改为空置状态。
12.一种设备,包括:
第一获取模块,用于响应于用户对底层数据库服务器中数据的操作,从缓存服务器中保存的所述数据的数据信息中获取所述数据的当前数据状态,作为第一数据状态;其中,所述当前数据状态是根据所述缓存服务器对所述数据当前正在执行的数据更新动作的执行情况而在所述数据信息中设置的;
第一控制模块,用于响应于确定所述第一数据状态表示所述缓存服务器对所述数据当前正在执行数据更新动作,控制所述缓存服务器拒绝对所述数据执行所述操作对应的目标数据更新动作。
13.根据权利要求12所述的设备,所述第一获取模块包括:
特征码获取子模块,用于响应于用户对底层数据库服务器中数据的操作,从底层数据库服务器中获取所述数据的特征码;
查找子模块,用于根据所述特征码,在所述缓存服务器中查找所述数据的当前数据状态,作为第一数据状态。
14.根据权利要求12所述的设备,还包括:
第一修改模块,用于响应于确定所述第一数据状态属于触发执行所述操作对应的所述目标数据更新动作的数据状态,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作正在执行的数据状态;
第二控制模块,用于控制所述缓存服务器对所述数据执行所述目标数据更新动作;
第二修改模块,用于响应于所述目标数据更新动作的完成,在所述数据信息中将所述数据的当前数据状态修改为表示所述目标数据更新动作执行完成的数据状态。
15.根据权利要求14所述的设备,所述操作为读取数据的操作,所述目标数据更新动作为数据存储;
所述触发执行所述操作对应的所述目标数据更新动作的数据状态为空置状态,所述空置状态表示在所述缓存服务器中不存在所述数据;
所述表示所述目标数据更新动作正在执行的数据状态为存储中状态,所述存储中状态表示所述缓存服务器正在存储所述数据;
所述表示所述目标数据更新动作执行完成的数据状态为已储存状态,所述已储存状态表示所述数据已经存储在所述缓存服务器中;
所述第二控制模块,包括:
提取子模块,用于从底层数据库服务器中提取所述数据;
储存子模块,用于将所述数据储存到所述缓存服务器中。
16.根据权利要求15所述的设备,还包括:
第二获取模块,用于在所述数据信息中再次获取所述数据在所述缓存服务器中的当前数据状态,作为第二数据状态;
第一触发模块,用于响应于确定所述第二数据状态不属于删除中状态和已删除状态,触发所述第二控制模块;其中,所述删除中状态表示所述缓存服务器中正在删除所述数据,所述已删除状态表示所述缓存服务器完成对所述数据的删除。
17.根据权利要求15所述的设备,还包括:
读取控制模块,用于响应于确定所述第一数据状态为已储存状态,从所述缓存服务器中读取所述数据,并控制缓存服务器拒绝所述目标数据存储动作。
18.根据权利要求14所述的设备,所述操作为更改或删除所述数据的操作,所述目标数据更新动作为数据删除;
所述触发执行所述操作对应的所述目标数据更新动作的数据状态为已储存状态,所述已储存状态表示所述数据已经存储在所述缓存服务器中;
所述表示所述目标数据更新动作正在执行的数据状态为删除中状态,所述删除中状态表示所述缓存服务器中正在删除所述数据;
所述表示所述目标数据更新动作执行完成的数据状态为空置状态,所述空置状态表示在所述缓存服务器中不存在所述数据;
所述第二控制模块,具体用于将所述数据从所述缓存服务器中删除。
19.根据权利要求18所述的设备,还包括:
操作模块,用于在所述第二控制模块启动完成之后,根据所述操作,更改或删除底层数据库服务器中所述数据,并触发所述第二修改模块。
20.根据权利要求19所述的设备,还包括:
第三修改模块,用于响应于确定所述第一数据状态属于空置状态,将所述数据的当前数据状态修改为删除中状态;
第二触发模块,用于在所述第三修改模块启动完成之后,触发所述操作模块。
21.根据权利要求19所述的设备,还包括:
第四修改模块,用于响应于确定所述第一数据状态属于已删除状态,将所述数据的当前数据状态修改为删除中状态;
第三触发模块,用于在所述第四修改模块启动完成之后,触发所述操作模块。
22.根据权利要求18~21所述的设备,所述第二修改模块包括:
第三获取子模块,用于在所述数据信息中再次获取所述数据的当前数据状态,作为第三数据状态;
第五修改子模块,用于响应于确定所述第三数据状态属于删除中状态,在所述数据信息中将所述数据的当前数据状态修改为已删除状态;
第四触发子模块,用于在所述第五修改模块启动完成之后,触发所述第五修改模块,触发所述第三获取模块;
第六修改子模块,用于响应于确定所述第三数据状态属于已删除状态,在所述数据信息中将所述数据的当前数据状态修改为空置状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310205353.0A CN103324679B (zh) | 2013-05-28 | 2013-05-28 | 一种缓存服务器中数据更新的控制方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310205353.0A CN103324679B (zh) | 2013-05-28 | 2013-05-28 | 一种缓存服务器中数据更新的控制方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103324679A true CN103324679A (zh) | 2013-09-25 |
CN103324679B CN103324679B (zh) | 2017-03-08 |
Family
ID=49193422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310205353.0A Active CN103324679B (zh) | 2013-05-28 | 2013-05-28 | 一种缓存服务器中数据更新的控制方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324679B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678561A (zh) * | 2013-12-06 | 2014-03-26 | 华为技术有限公司 | 桶状态处理方法与装置 |
CN106354432A (zh) * | 2016-08-30 | 2017-01-25 | 北京小米移动软件有限公司 | 数据修改方法及装置 |
CN107992290A (zh) * | 2016-10-26 | 2018-05-04 | 北京京东尚科信息技术有限公司 | 后台数据处理方法及系统 |
CN108182241A (zh) * | 2017-12-28 | 2018-06-19 | 深圳市博实结科技有限公司 | 一种数据交互的优化方法、装置、服务器及存储介质 |
CN112685782A (zh) * | 2021-01-04 | 2021-04-20 | 浪潮云信息技术股份公司 | 一种基于缓存数据库实现的分布式登录控制方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050106A1 (en) * | 2003-08-29 | 2005-03-03 | Tobias Wenner | System and method for synchronizing distributed buffers when committing data to a database |
CN101090401A (zh) * | 2007-05-25 | 2007-12-19 | 金蝶软件(中国)有限公司 | 一种群集环境下的数据缓存方法及系统 |
CN101238476A (zh) * | 2005-04-01 | 2008-08-06 | 微软公司 | 宽松当前性约束 |
CN101416183A (zh) * | 2005-12-08 | 2009-04-22 | 卓越技术公司 | 保存无线设备当前数据的方法和系统 |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
CN102081625A (zh) * | 2009-11-30 | 2011-06-01 | 中国移动通信集团北京有限公司 | 一种数据查询的方法及查询服务器 |
CN102508844A (zh) * | 2011-09-26 | 2012-06-20 | 北京金马甲产权网络交易有限公司 | 一种网络竞价的动态共享数据的缓存系统和方法 |
CN102789475A (zh) * | 2012-05-08 | 2012-11-21 | 华为技术有限公司 | 数据库服务器端结果集缓存的数据同步方法及装置 |
CN102982087A (zh) * | 2012-11-01 | 2013-03-20 | 华为技术有限公司 | 一种检测数据库数据一致性的方法、装置及数据库系统 |
-
2013
- 2013-05-28 CN CN201310205353.0A patent/CN103324679B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050106A1 (en) * | 2003-08-29 | 2005-03-03 | Tobias Wenner | System and method for synchronizing distributed buffers when committing data to a database |
CN101238476A (zh) * | 2005-04-01 | 2008-08-06 | 微软公司 | 宽松当前性约束 |
CN101416183A (zh) * | 2005-12-08 | 2009-04-22 | 卓越技术公司 | 保存无线设备当前数据的方法和系统 |
CN101090401A (zh) * | 2007-05-25 | 2007-12-19 | 金蝶软件(中国)有限公司 | 一种群集环境下的数据缓存方法及系统 |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
CN102081625A (zh) * | 2009-11-30 | 2011-06-01 | 中国移动通信集团北京有限公司 | 一种数据查询的方法及查询服务器 |
CN102508844A (zh) * | 2011-09-26 | 2012-06-20 | 北京金马甲产权网络交易有限公司 | 一种网络竞价的动态共享数据的缓存系统和方法 |
CN102789475A (zh) * | 2012-05-08 | 2012-11-21 | 华为技术有限公司 | 数据库服务器端结果集缓存的数据同步方法及装置 |
CN102982087A (zh) * | 2012-11-01 | 2013-03-20 | 华为技术有限公司 | 一种检测数据库数据一致性的方法、装置及数据库系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678561A (zh) * | 2013-12-06 | 2014-03-26 | 华为技术有限公司 | 桶状态处理方法与装置 |
CN103678561B (zh) * | 2013-12-06 | 2017-02-15 | 华为技术有限公司 | 桶状态处理方法与装置 |
CN106354432A (zh) * | 2016-08-30 | 2017-01-25 | 北京小米移动软件有限公司 | 数据修改方法及装置 |
CN107992290A (zh) * | 2016-10-26 | 2018-05-04 | 北京京东尚科信息技术有限公司 | 后台数据处理方法及系统 |
CN107992290B (zh) * | 2016-10-26 | 2022-06-07 | 北京京东尚科信息技术有限公司 | 后台数据处理方法及系统 |
CN108182241A (zh) * | 2017-12-28 | 2018-06-19 | 深圳市博实结科技有限公司 | 一种数据交互的优化方法、装置、服务器及存储介质 |
CN108182241B (zh) * | 2017-12-28 | 2021-03-26 | 深圳市博实结科技有限公司 | 一种数据交互的优化方法、装置、服务器及存储介质 |
CN112685782A (zh) * | 2021-01-04 | 2021-04-20 | 浪潮云信息技术股份公司 | 一种基于缓存数据库实现的分布式登录控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103324679B (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102693280B (zh) | 网页浏览方法、WebApp框架、执行JavaScript方法及装置、移动终端 | |
JP2020504865A (ja) | アプリケーションデータ処理方法、装置、及び記憶媒体 | |
CN103324679A (zh) | 一种缓存服务器中数据更新的控制方法和设备 | |
US10963447B2 (en) | Automatic lock removal method for scalable synchronization in dynamic data structures | |
CN110413276B (zh) | 参数编辑方法及装置、电子设备、存储介质 | |
CN105808633A (zh) | 数据归档方法和系统 | |
US8812683B2 (en) | Service scripting framework | |
JP6257610B2 (ja) | ユーザーに特有のローミング設定 | |
US10684838B2 (en) | Dynamic application deployment | |
CN103229144A (zh) | 预热软件安装 | |
US9678632B2 (en) | Data processing method and apparatus | |
CN106789249B (zh) | 热更新方法、客户端及服务器 | |
US20210160305A1 (en) | Application version switching method and apparatus, electronic device and storage medium | |
US20180218276A1 (en) | Optimizing Application Performance Using Finite State Machine Model and Machine Learning | |
US20160342478A1 (en) | User interface state saving and restoration | |
CN106886422A (zh) | 软件升级方法及装置、电子设备 | |
CN106357791A (zh) | 业务处理方法、装置及系统 | |
CN111695827A (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
CN103514004A (zh) | Windows系统下的系统环境管理方法及装置 | |
CN112395437B (zh) | 一种3d模型的加载方法、装置、电子设备及存储介质 | |
CN107430596B (zh) | 输入法编辑器的外部化执行 | |
US20140181502A1 (en) | Dynamically manipulating rules for adding new devices | |
US9898264B2 (en) | Automatic componentization engine | |
CN113361236A (zh) | 一种编辑文档的方法和装置 | |
CN109144544A (zh) | 一种银行所使用的应用程序更新方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, Building 4, No. 599 Wangshang Road, Changhe Street, Binjiang District, Hangzhou City, Zhejiang Province, 310051 Patentee after: Hangzhou NetEase Shuzhifan Technology Co.,Ltd. Address before: 310013 Room 604-605, 6th floor, 18 Jiaogong Road, Xihu District, Hangzhou City, Zhejiang Province Patentee before: HANGZHOU LANGHE TECHNOLOGY Ltd. |