CN114253988B - 基于版本的数据更新方法、装置、电子设备及存储介质 - Google Patents
基于版本的数据更新方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114253988B CN114253988B CN202210189548.XA CN202210189548A CN114253988B CN 114253988 B CN114253988 B CN 114253988B CN 202210189548 A CN202210189548 A CN 202210189548A CN 114253988 B CN114253988 B CN 114253988B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- database
- version
- updating
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于版本的数据更新方法、装置、电子设备及存储介质,该方法包括:响应于将设定数据项的第一数据更新至数据库中的请求,将第一数据及其第一版本标识更新至数据库中;在此之后,执行第一设定操作,以使缓存中没有存储设定数据项的数据、且第一版本标识被更新于缓存中;响应于读取设定数据项的数据的请求,在缓存中没有存储设定数据项的数据的情况下,获取数据库中存储的设定数据项的第二数据及其第二版本标识;在缓存中存储有对应设定数据项的第三版本标识、且根据第二版本标识确定出对应第三版本标识的数据在数据库中的更新时间早于或者等于第二数据在数据库中的更新时间的情况下,将第二数据更新至缓存中。
Description
技术领域
本发明实施例涉及数据更新技术领域,更具体地,涉及一种基于版本的数据更新方法、装置、电子设备及存储介质。
背景技术
在目前非常流行的Web(World Wide Web,全球广域网,也称为万维网)服务架构中,数据库(data base,db)是一个非常重要的数据持久化的组件。但由于数据库将数据必须持久化到磁盘的特性,导致其响应能力在面对大量高并发请求时会显得捉襟见肘,无法满足高性能的要求,如此通常可以在应用程序(Application,app)与数据库之间添加一层缓存(cache),使得读取数据时直接从缓存中读。由于缓存一般是存储在内存中的,它的访问速度是远远大于磁盘的,所以利用缓存一般能达到提高应用程序的吞吐量、降低处理时长、减少网络流量等目的,也因此缓存被广泛的应用在计算机的各个细分领域中。
但在引入了缓存的同时,也引入了缓存与数据库数据不一致的可能。例如,在数据库中成功更新了用户的昵称字段,但是缓存中的相应昵称信息没有得到及时更新,导致用户看到的还是旧的昵称。如此,为了尽量避免这种缓存与数据库数据不一致的现象,以什么样的机制更新缓存和数据库就显得尤为重要。
发明内容
本发明实施例的一个目的是提供一种基于版本的数据更新的新的技术方案。
根据本发明的第一方面,提供了一种基于版本的数据更新方法,包括:响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中;在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中;响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识;在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中。
可选地,在所述获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识之后,所述方法还包括:在所述缓存中没有存储对应所述设定数据项的版本标识的情况下,执行所述将所述第二数据更新至所述缓存中的步骤。
可选地,在所述获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识之后,所述方法还包括:在所述缓存中存储有所述第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间晚于所述第二数据在所述数据库中的更新时间的情况下,不执行所述将所述第二数据更新至所述缓存中的步骤。
可选地,所述方法还包括:根据设定的缓存过期策略,确定对应所述设定数据项的缓存过期时间;在达到所述缓存过期时间的情况下,执行第二设定操作,以使所述缓存中没有存储所述设定数据项的数据和对应所述设定数据项的版本标识。
可选地,在将所述第一数据和所述第一版本标识更新至所述数据库中之后,所述方法还包括:确定所述缓存中是否存储有对应所述设定数据项的版本标识;在确定出所述缓存中存储有对应所述设定数据项的第四版本标识的情况下,根据所述第一版本标识,确定对应所述第四版本标识的数据在所述数据库中的更新时间是否早于所述第一数据在所述数据库中的更新时间;在确定出对应所述第四版本标识的数据在所述数据库中的更新时间早于所述第一数据在所述数据库中的更新时间的情况下,执行所述执行第一设定操作的步骤。
可选地,所述将所述第二数据更新至所述缓存中,包括:将所述第二数据和所述第二版本标识一并更新至所述缓存中。
可选地,所述第二版本标识和所述第三版本标识的标识类型均为版本编号;所述方法还包括:确定所述第三版本标识是否小于或者等于所述第二版本标识;其中,所述第三版本标识小于或者等于所述第二版本标识的情况表示对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间。
根据本发明的第二方面,还提供了一种基于版本的数据更新装置,包括:第一处理模块,用于响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中;响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识;第二处理模块,用于在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中;以及,第三处理模块,用于在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中。
根据本发明的第三方面,还提供了一种电子设备,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据本发明第一方面所述的方法。
根据本发明的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据本发明的第一方面所述的方法。
本发明实施例的一个有益效果在于,响应于将设定数据项的第一数据更新至数据库中的请求,将第一数据及其第一版本标识更新至数据库中;在将第一数据和第一版本标识更新至数据库中之后,执行第一设定操作,以使缓存中没有存储设定数据项的数据、且第一版本标识被更新于缓存中;响应于读取设定数据项的数据的请求,在缓存中没有存储设定数据项的数据的情况下,获取数据库中存储的设定数据项的第二数据及其第二版本标识;在缓存中存储有对应设定数据项的第三版本标识、且根据第二版本标识确定出对应第三版本标识的数据在数据库中的更新时间早于或者等于第二数据在数据库中的更新时间的情况下,将第二数据更新至缓存中。本实施例基于数据版本来实现写操作和读操作下的缓存及数据库的数据更新,可以尽量避免缓存与数据库数据不一致的现象。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明实施例的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明实施例的原理。
图1是根据一个实施例的一种现有数据更新方式的示意图;
图2是根据另一个实施例的一种现有数据更新方式的示意图;
图3是根据又一个实施例的一种现有数据更新方式的示意图;
图4是能够实施根据一个实施例的基于版本的数据更新方法的电子设备组成结构的示意图;
图5是根据一个实施例的基于版本的数据更新方法的流程示意图;
图6是根据一个实施例的基于版本的数据更新方式的示意图;
图7是根据另一个实施例的基于版本的数据更新方法的流程示意图;
图8是根据一个实施例的基于版本的数据更新装置的方框原理图;
图9是根据一个实施例的电子设备的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例的一个应用场景为对缓存及数据库进行数据更新。
为了实现对缓存及数据库进行数据更新的目的,可以采用下述4种实施方式(实施方式1~实施方式4)中的任意一种。下面,分别对这4种实施方式进行说明。
实施方式1:更新数据库(db)后紧接着更新缓存(cache)。
该实施方式1能以最快速度刷新缓存,但是在一些高并发的场景下,如图1所示,多次写缓存的操作之间可能因为网络乱序或处理时长不同等原因,导致先后顺序错乱而互相覆盖的问题,从而引起数据不一致。
基于此,可以考虑采用搭配内存锁/分布锁之类的手段来使操作序列化。比如可以在应用程序(app)代码中将write db(写数据库)和update cache(更新缓存)等操作包括在一把锁的范围内,这样就不会发生上述的覆盖问题。但这样锁的粒度就比较大,因为包括了几次网络传输的往返和数据库持久化数据的时间,所以并发能力受到了较大的限制,在一些热点缓存大量更新的情况下会造成明显的吞吐量下降的情况。
实施方式2:更新db后删除cache,这一实施方式也被称为cache aside。
该实施方式2比较均衡,但是在特殊场景下,如图2所示,也存在 cache被旧版数据覆盖,从而产生数据不一致的情况。
基于此,可以考虑给cache加上过期时间,依赖于cache的自动过期,从而减少不一致的时间,但这一实施方式也并没有从根本上解决问题。
实施方式3:更新cache后直接返回,由独立的worker程序异步刷新到db,这一实施方式也被称为write behind。
该实施方式3能实现很快的写入速度、达到较高的吞吐,但这一实施方式也可能会存在较长时间的cache与db数据不一致,且在一些特殊场景下还存在数据丢失的风险,比如在worker程序刷新到db之前,缓存服务器宕机等。并且这一实施方式还需要有一套track机制,来识别出哪些cache经过了修改,刷新db的时候只刷新这些经过修改的cache数据,或者只在某些cache因为空间不足需要失效的时候再刷新到db。可见,这一实施方式的总体实现复杂度较高。
实施方式4:请参考图3,更新db后由独立的worker程序监听数据库的操作记录,比如监听MySQL(MySQL是一个关系型数据库管理***)的binlog(binlog是一个二进制格式的文件),然后根据这些信息,再对缓存进行更新或者删除操作。或者监听到操作后,不直接操作,而是导入到消息队列中,再由另外的worker程序来对消息进行消费,然后更新或删除缓存。
该实施方式4还有一些其他变体,但一般作为上述实施方式1和实施方式2的补充方案,能起到保证最终一致性的作用,但这类方案的复杂度较高,引入了很多组件和服务的可用性问题,对架构团队的要求高。
至少针对以上实施方式存在的cache与db数据不一致这一技术问题,发明人通过新增版本属性,提出了一种基于版本的数据更新方法,包括:响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中;在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中;响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识;在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中。
<硬件配置>
图4是可用于实现本发明实施例的电子设备1000的结构示意图。
该电子设备1000可以是智能手机、便携式电脑、台式计算机、平板电脑、服务器等,在此不做限定。
该电子设备1000可以包括但不限于处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、图形处理器GPU、微处理器MCU等,用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、串行接口、并行接口等。通信装置1400例如能够利用光纤或电缆进行有线通信,或者进行无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。扬声器1700用于输出音频信号。麦克风1800用于采集音频信号。
应用于本发明实施例中,电子设备1000的存储器1200用于存储计算机程序,该计算机程序用于控制所述处理器1100进行操作以实现根据本发明实施例的方法。技术人员可以根据本发明所公开方案设计该计算机程序。该计算机程序如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。该电子设备1000可以安装有智能操作***(例如Windows、Linux、安卓、IOS等***)和应用软件。
本领域技术人员应当理解,尽管在图4中示出了电子设备1000的多个装置,但是,本发明实施例的电子设备1000可以仅涉及其中的部分装置,例如,只涉及处理器1100和存储器1200等。
下面,参照附图描述根据本发明的各个实施例和例子。
<方法实施例>
图5是根据一个实施例的基于版本的数据更新方法的流程示意图。本实施例的实施主体例如为图4所示的电子设备1000。
如图5所示,本实施例的基于版本的数据更新方法可以包括如下步骤S210∼步骤S240:
步骤S210,响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中,并执行以下步骤S220和步骤S230。
详细地,对于设定的任一数据项,用户可以按需对该数据项的数据进行更新,以及可以按需读取该数据项的数据。
该步骤中,用户请求更新设定数据项的数据时,可以提供待更新的第一数据,数据更新装置从而可以将第一数据更新至数据库中。
在本发明一个实施例中,为了简化流程,数据读取操作和数据更新操作可以由应用程序来执行。在可行的其他实现方式中,也可以由独立的缓存中间件来执行这些操作。
为解决缓存和数据库数据不一致的问题,对于数据库中的每一数据,均对应有相应的版本标识。其中,数据的版本标识用于唯一指示相应数据,以便于根据数据的版本标识,可以确定相应数据是否为最新数据。
如此,版本标识可以为数据的版本编号,数据在数据库中的更新时间越早,其版本编号越小,反之版本编号越大。
基于此,可以对数据的版本进行编号,以版本编号作为数据的版本属性。可行地,对数据版本进行编号时,可以由应用程序自身来实现编号功能,也可直接利用数据库自带的事务号的功能来实现进行编号。比如存在一个KV(Key-Value,键-值)存储ETCD(ETCD是一个KV存储***),每个写入或删除操作都有一个对应的全局唯一revision(修订),该ETCD存储产生的各个revision,该revision可以用做数据的版本编号。
本实施例中,为便于基于版本标识来保证缓存和数据库数据相一致,在将数据更新至数据库中的同时,还将该数据的版本标识也一并更新至数据库中。
在可行的实现方式中,版本标识的设置方式可以为下述方式一或方式二。
方式一:在真正的缓存数据外包装一层父结构,并设置一个子字段来保存缓存数据,然后就可以新增另一个子字段来保存版本信息。
方式二:设置一个shadow key(影子键)来保存版本信息,且以固定的前缀开头。比如保存数据的缓存key的名称是“user_name”,那么可以新增一个key叫作“ver_user_name”,来保存版本信息。
步骤S220,在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中。
在将第一数据及其版本标识更新至数据库中之后,由于数据有变化,故而可以清除缓存中的相应数据及其版本标识,并将最新的版本标识更新至缓存中。
本实施例中,通过清除缓存中的相应数据,可以避免缓存和数据库数据不一致,从而可以避免用户请求读取数据时,从缓存中读取到的数据与数据库中的数据不一致。
请参考图6,在将value:b(即数据:b)及ver:2(即版本标识:2)更新至数据库中后,可以清除缓存中的相应数据。由于缓存中无相应数据,则后续读取数据时,会从数据库中读取到当前最新的数据(value:b)并更新至缓存中,以保证缓存和数据库数据相一致。
本实施例中,通过清除缓存中的相应版本标识,并将最新的版本标识更新至缓存中,以便于避免后续将非最新数据设置到缓存中,从而可以避免从缓存和数据库数据不一致。
请参考图6,在将value:b(即数据:b)及ver:2(即版本标识:2)更新至数据库中后,可以将当前最新的版本标识(ver:2)更新至缓存中。由于是在该写操作之前发生的读操作,则从数据库中读取到的数据不是当前最新的数据(读取到value:a及ver:1),通过对比读取到的版本标识和缓存中的版本标识,可以不将读取到的数据(value:a)设置到缓存中,以避免从缓存和数据库数据不一致。
由上可知,在本实施例中,当数据发生更新时,先更新数据库,然后删除缓存中的数据,同时将最新的数据版本设置到缓存中。
在本发明一个实施例中,在将所述第一数据和所述第一版本标识更新至所述数据库中之后,所述方法还可以包括以下步骤A1~步骤A3:
步骤A1,确定所述缓存中是否存储有对应所述设定数据项的版本标识。
该步骤中,在更新版本标识至缓存中之前,先确定缓存中是否存储有相应的版本标识。若为否(比如因设置的过期策略使得缓存中的版本标识过期而被清除),可以直接执行第一设定操作。
步骤A2,在确定出所述缓存中存储有对应所述设定数据项的第四版本标识的情况下,根据所述第一版本标识,确定对应所述第四版本标识的数据在所述数据库中的更新时间是否早于所述第一数据在所述数据库中的更新时间。
在缓存中存储有版本标识的情况下,可以对比缓存中的版本标识和待更新的版本标识,以确定哪个版本标识对应数据在数据库中的更新时间更早。
步骤A3,在确定出对应所述第四版本标识的数据在所述数据库中的更新时间早于所述第一数据在所述数据库中的更新时间的情况下,执行所述执行第一设定操作的步骤。
若不存在如图1所示的两次写操作存在时间交叉的情况,通常可以得到缓存中的版本标识对应数据在数据库中的更新时间较早的对比结果,此时可以执行第一设定操作,以保证缓存所指示的数据和数据库中的数据相一致。
反之,可以得到待更新的版本标识对应数据(即当前写操作的数据)在数据库中的更新时间较早的对比结果,此时不执行第一设定操作,以避免缓存所指示的数据和数据库中的数据不一致。
可见,本实施例可以应对两次数据更新在时间先后顺序上有交叉的情况,保证数据更新的准确执行。
步骤S230,响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识。
响应于读取数据的请求,可以先确定缓存中是否存储有相应数据,若已存储则可以直接从缓存中读取,反之从数据库中读取。其中,为避免在图2所示场景下,从数据库中读取到的不是最新的数据,并将读取到的非最新数据设置至缓存中,本实施例可以一并从数据库中读取数据及其版本标识,以便于根据读取的版本标识,来确定读取到的数据是否为最新数据。
如此,若为最新数据,才将读取到的数据设置至缓存中,以保证缓存和数据库数据相一致。反之,不将读取到的数据设置至缓存中,以避免缓存和数据库数据不一致。
在本实施例中,查询数据时先查缓存,如果缓存中不存在相应数据(即cachemiss),则转去查询数据库。为保证数据库中数据与缓存中数据保持一致,在查询数据库中数据时,还查询该数据的版本标识。如此,可为保证缓存和数据库数据相一致提供支持。
步骤S240,在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中。
在从数据库中读取到数据及其版本标识之后,可以按需执行缓存设置操作。
为保证缓存设置操作的准确执行,可以先确定缓存中是否存储有相应版本标识。若为否(比如因设置的过期策略使得缓存中的版本标识过期而被清除),可以认为读取到的数据即为最新数据,故而可以直接将读取到的数据更新至缓存中。
如此,在本发明一个实施例中,在所述获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识之后,所述方法还包括:在所述缓存中没有存储对应所述设定数据项的版本标识的情况下,执行所述将所述第二数据更新至所述缓存中的步骤。
本实施例中,在确定出缓存中没有存储相应版本标识的情况下,可以认为读取到的数据即为最新数据,故而可以直接将读取到的数据更新至缓存中,以保证缓存和数据库数据相一致。
而在确定出缓存中存储有相应版本标识的情况下,可以进一步判断对比缓存中的版本标识和读取到的版本标识,以确定读取到的数据是否为最新的数据。
可行地,版本标识可以为数据的版本编号。基于此,在本发明一个实施例中,所述第二版本标识和所述第三版本标识的标识类型均为版本编号。
对应地,所述方法还包括:确定所述第三版本标识是否小于或者等于所述第二版本标识。
其中,所述第三版本标识小于或者等于所述第二版本标识的情况表示对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间。此时可以将第二数据更新至缓存中,而不会导致缓存和数据库数据不一致。
本实施例中,若第三版本标识大于第二版本标识,说明对应第三版本标识的数据的更新时间晚于第二数据的更新时间。此时不将第二数据更新至缓存中,否则会导致缓存和数据库数据不一致。
可见,对于缓存的设置,本实施例在查到数据库中数据及其版本号后,若数据库中的版本号大于或者等于缓存中的版本号,将查到的数据库数据设置到缓存中,反之可以不作处理,如此可以避免存在缓存和数据库数据不一致的情况。
本实施例中,通过对比缓存中的版本标识和从数据库中读取到的版本标识,来确定读取到的数据是否为最新的数据。若是则可以将读取到的数据更新至缓存中,以保证缓存和数据库数据相一致。反之,不将读取到的数据更新至缓存中,以避免缓存和数据库数据不一致。
请参考图6,在将value:b及ver:2更新至数据库中,并将ver:2更新至缓存中之后,发生了读操作,并从数据库中读取到value:b及ver:2。基于此,缓存中的版本标识为ver:2,且读取到的版本标识为ver:2,两者相等,说明读取到的value:b为最新数据,则将value:b更新至缓存中。
请参考图6,在将value:c及ver:3更新至数据库中并ver:3更新至缓存中将之后,以及在将value:d及ver:4更新至数据库中之后以及在将ver:4更新至缓存中之前,发生了读操作,并从数据库中读取到value:d及ver:4。基于此,缓存中的版本标识为ver:3,而读取到的版本标识为ver:4,ver:4>ver:3,说明读取到的value:d为最新数据,则将value:d更新至缓存中。
请参考图6,在读取到value:a及ver:1后以及在设置缓存之前,发生了写操作,使得数据库中更新为value:b及ver:2,缓存中更新为ver:2。基于此,缓存中的版本标识为ver:2,而读取到的版本标识为ver:1,ver:2>ver:1,说明读取到的value:a不是最新数据,则不将value:a更新至缓存中。
基于此,在本发明一个实施例中,在所述获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识之后,所述方法还包括:
在所述缓存中存储有所述第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间晚于所述第二数据在所述数据库中的更新时间的情况下,不执行所述将所述第二数据更新至所述缓存中的步骤。
本实施例中,若缓存中的版本标识所对应数据在数据库中的更新时间更晚,说明读取到的数据不是最新的数据,故而不将读取到的数据更新至缓存中,以避免缓存和数据库数据不一致。
可行地,对于缓存设置,可以仅将数据更新至缓存中,而不将该数据的版本标识一并更新至缓存中,而不会对缓存和数据库数据一致性造成影响。不过这一设计可能会使得数据生效慢一点。
如此,为提高数据生效速度,在本发明一个实施例中,所述将所述第二数据更新至所述缓存中,包括:将所述第二数据和所述第二版本标识一并更新至所述缓存中。
考虑到存在多批操作之间的顺序交叉和互相覆盖的问题,且本实施例中的版本比较操作和缓存设置操作是两个分开的步骤,为保证版本比较操作和缓存设置操作这两个操作的原子性,在可行的实现方式中,可以利用缓存事务等能力将版本比较操作和缓存设置操作原子化。
比如,可以在Redis(Remote Dictionary Server,远程字典服务)中使用Lua(Lua是一个小巧的脚本语言)脚本来实现相应事务性操作,相应的伪代码可以如下所示:
localkey_name = KEYS[1]
localnew_value = ARGS[1]
localnew_version = ARGS[2]
localver_key_name = "ver_" + key_name
localexist_version = redis_get(ver_key_name)
if !redis_exist(exist_version) || new_version>= exist_version
redis_set(key_name, new_value)
redis_set(ver_key_name, new_version)
由上可知,本实施例提供了基于版本的数据更新方法,该方法响应于将设定数据项的第一数据更新至数据库中的请求,将第一数据及其第一版本标识更新至数据库中;在将第一数据和第一版本标识更新至数据库中之后,执行第一设定操作,以使缓存中没有存储设定数据项的数据、且第一版本标识被更新于缓存中;响应于读取设定数据项的数据的请求,在缓存中没有存储设定数据项的数据的情况下,获取数据库中存储的设定数据项的第二数据及其第二版本标识;在缓存中存储有对应设定数据项的第三版本标识、且根据第二版本标识确定出对应第三版本标识的数据在数据库中的更新时间早于或者等于第二数据在数据库中的更新时间的情况下,将第二数据更新至缓存中。本实施例基于数据版本来实现写操作和读操作下的缓存及数据库的数据更新,可以尽量避免缓存与数据库数据不一致的现象。
本实施例通过新制版本属性来实现缓存和数据库的数据更新,不仅可以尽量避免缓存与数据库数据不一致的现象,还不存在现有数据更新方式中对锁的依赖而导致的并发性能差、架构复杂度高的问题。
在本发明一个实施例中,所述方法还可以包括以下步骤B1~步骤B2:
步骤B1,根据设定的缓存过期策略,确定对应所述设定数据项的缓存过期时间。
详细地,缓存的过期策略可以视情况而定。在将数据及其版本标识一并更新至缓存中的情况下,可以将数据及其版本标识的过期时间设置为一致。
在将数据和/或其版本标识设置到缓存中之后,可以根据缓存过期策略确定相应的缓存过期时间。
步骤B2,在达到所述缓存过期时间的情况下,执行第二设定操作,以使所述缓存中没有存储所述设定数据项的数据和对应所述设定数据项的版本标识。
在当前时间达到缓存过期时间时,可以清除缓存中的数据及其版本标识,以释放缓存资源。
可见,本实施例在支持缓存与数据库数据相一致的同时,还可支持缓存资源的合理配置。
综上所述,本实施例提供的基于版本的数据更新方法至少可以具有以下效果:
1)通过引入数据的版本属性检查,解决了极端情况下的可能产生的数据不一致的问题。
2)避免了粗粒度的锁,通过细粒度的事务性操作,在保证一致性的情况下,也可拥有更好的并发性。
3)技术实现较为简单直接,架构朴素,容易理解和维护。
<例子>
图7给出了根据一实施例的基于版本的数据更新方法的流程示意图,该实施例的方法可以包括以下步骤S301~步骤S307:
步骤S301,响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中,并执行步骤S302和步骤S303。
步骤S302,在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中。
步骤S303,响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识,并执行步骤S304~步骤S306中的一个。
步骤S304,在所述缓存中没有存储对应所述设定数据项的版本标识的情况下,执行步骤S307。
步骤S305,在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,执行步骤S307。
步骤S306,在所述缓存中存储有所述第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间晚于所述第二数据在所述数据库中的更新时间的情况下,结束当前流程以不执行步骤S307。
步骤S307,将所述第二数据和所述第二版本标识一并更新至所述缓存中。
<设备实施例>
图8是根据一个实施例的基于版本的数据更新装置400的原理框图。如图8所示,该基于版本的数据更新装置400可以包括第一处理模块410、第二处理模块420和第三处理模块430。
该基于版本的数据更新装置400可以是图4所示的电子设备1000。
其中,所述第一处理模块410用于响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中;响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识。所述第二处理模块420用于在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中。所述第三处理模块430用于在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中。
本实施例基于数据版本来实现写操作和读操作下的缓存及数据库的数据更新,可以尽量避免缓存与数据库数据不一致的现象。
在本发明一个实施例中,所述第三处理模块430用于在所述缓存中没有存储对应所述设定数据项的版本标识的情况下,执行所述将所述第二数据更新至所述缓存中的步骤。
在本发明一个实施例中,所述第三处理模块430用于在所述缓存中存储有所述第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间晚于所述第二数据在所述数据库中的更新时间的情况下,不执行所述将所述第二数据更新至所述缓存中的步骤。
在本发明一个实施例中,该基于版本的数据更新装置400还包括:用于根据设定的缓存过期策略,确定对应所述设定数据项的缓存过期时间的模块;以及,用于在达到所述缓存过期时间的情况下,执行第二设定操作,以使所述缓存中没有存储所述设定数据项的数据和对应所述设定数据项的版本标识的模块。
在本发明一个实施例中,所述第二处理模块420用于确定所述缓存中是否存储有对应所述设定数据项的版本标识;在确定出所述缓存中存储有对应所述设定数据项的第四版本标识的情况下,根据所述第一版本标识,确定对应所述第四版本标识的数据在所述数据库中的更新时间是否早于所述第一数据在所述数据库中的更新时间;在确定出对应所述第四版本标识的数据在所述数据库中的更新时间早于所述第一数据在所述数据库中的更新时间的情况下,执行所述执行第一设定操作的步骤。
在本发明一个实施例中,所述第三处理模块430用于将所述第二数据和所述第二版本标识一并更新至所述缓存中。
在本发明一个实施例中,所述第二版本标识和所述第三版本标识的标识类型均为版本编号;所述第三处理模块430用于确定所述第三版本标识是否小于或者等于所述第二版本标识;其中,所述第三版本标识小于或者等于所述第二版本标识的情况表示对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间。
图9是根据一个实施例的电子设备500的硬件结构示意图。
如图9所示,该电子设备500包括处理器510和存储器520,该存储器520用于存储可执行的计算机程序,该处理器510用于根据该计算机程序的控制,执行如以上任意方法实施例的方法。
该电子设备500可以是图4所示的电子设备1000。
以上电子设备500的各模块可以由本实施例中的处理器510执行存储器520存储的计算机程序实现,也可以通过其他电路结构实现,在此不做限定。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种基于版本的数据更新方法,其特征在于,包括:
响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中;
在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中;
响应于读取所述设定数据项的数据的请求,在所述缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识;
在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中,
其中,在远程字典服务中使用Lua脚本实现版本比较操作和缓存设置操作原子化。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识之后,所述方法还包括:
在所述缓存中没有存储对应所述设定数据项的版本标识的情况下,执行所述将所述第二数据更新至所述缓存中的步骤。
3.根据权利要求1所述的方法,其特征在于,在所述获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识之后,所述方法还包括:
在所述缓存中存储有所述第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间晚于所述第二数据在所述数据库中的更新时间的情况下,不执行所述将所述第二数据更新至所述缓存中的步骤。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据设定的缓存过期策略,确定对应所述设定数据项的缓存过期时间;
在达到所述缓存过期时间的情况下,执行第二设定操作,以使所述缓存中没有存储所述设定数据项的数据和对应所述设定数据项的版本标识。
5.根据权利要求1所述的方法,其特征在于,在将所述第一数据和所述第一版本标识更新至所述数据库中之后,所述方法还包括:
确定所述缓存中是否存储有对应所述设定数据项的版本标识;
在确定出所述缓存中存储有对应所述设定数据项的第四版本标识的情况下,根据所述第一版本标识,确定对应所述第四版本标识的数据在所述数据库中的更新时间是否早于所述第一数据在所述数据库中的更新时间;
在确定出对应所述第四版本标识的数据在所述数据库中的更新时间早于所述第一数据在所述数据库中的更新时间的情况下,执行所述执行第一设定操作的步骤。
6.根据权利要求1所述的方法,其特征在于,所述将所述第二数据更新至所述缓存中,包括:
将所述第二数据和所述第二版本标识一并更新至所述缓存中。
7.根据权利要求1所述的方法,其特征在于,所述第二版本标识和所述第三版本标识的标识类型均为版本编号;
所述方法还包括:确定所述第三版本标识是否小于或者等于所述第二版本标识;
其中,所述第三版本标识小于或者等于所述第二版本标识的情况表示对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间。
8.一种基于版本的数据更新装置,其特征在于,包括:
第一处理模块,用于响应于将设定数据项的第一数据更新至数据库中的请求,将所述第一数据和所述第一数据的第一版本标识更新至所述数据库中;响应于读取所述设定数据项的数据的请求,在缓存中没有存储所述设定数据项的数据的情况下,获取所述数据库中存储的所述设定数据项的第二数据和所述第二数据的第二版本标识;
第二处理模块,用于在将所述第一数据和所述第一版本标识更新至所述数据库中之后,执行第一设定操作,以使缓存中没有存储所述设定数据项的数据、且所述第一版本标识被更新于所述缓存中;以及,
第三处理模块,用于在所述缓存中存储有对应所述设定数据项的第三版本标识、且根据所述第二版本标识确定出对应所述第三版本标识的数据在所述数据库中的更新时间早于或者等于所述第二数据在所述数据库中的更新时间的情况下,将所述第二数据更新至所述缓存中,
其中,在远程字典服务中使用Lua脚本实现版本比较操作和缓存设置操作原子化。
9.一种电子设备,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据权利要求1-7中任意一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210189548.XA CN114253988B (zh) | 2022-03-01 | 2022-03-01 | 基于版本的数据更新方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210189548.XA CN114253988B (zh) | 2022-03-01 | 2022-03-01 | 基于版本的数据更新方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114253988A CN114253988A (zh) | 2022-03-29 |
CN114253988B true CN114253988B (zh) | 2022-05-13 |
Family
ID=80800111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210189548.XA Active CN114253988B (zh) | 2022-03-01 | 2022-03-01 | 基于版本的数据更新方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253988B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112711730A (zh) * | 2021-01-21 | 2021-04-27 | 上海观察者信息技术有限公司 | 一种数据的缓存方法、装置、存储介质及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747746B2 (en) * | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
CN107122410A (zh) * | 2017-03-29 | 2017-09-01 | 武汉斗鱼网络科技有限公司 | 一种缓存更新方法及装置 |
CN110795421A (zh) * | 2019-10-31 | 2020-02-14 | 神州数码融信软件有限公司 | 一种防止脏数据产生的方法 |
CN111752919A (zh) * | 2020-06-16 | 2020-10-09 | 北京字节跳动网络技术有限公司 | 一种数据写入方法、数据读取方法及装置 |
CN113779052A (zh) * | 2020-11-10 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 数据更新方法、装置、设备及存储介质 |
-
2022
- 2022-03-01 CN CN202210189548.XA patent/CN114253988B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112711730A (zh) * | 2021-01-21 | 2021-04-27 | 上海观察者信息技术有限公司 | 一种数据的缓存方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114253988A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9164911B2 (en) | Atomic execution over accesses to multiple memory locations in a multiprocessor system | |
CN112711730B (zh) | 一种数据的缓存方法、装置、存储介质及电子设备 | |
CN108536617B (zh) | 缓存管理方法、介质、***和电子设备 | |
CN109241128B (zh) | 一种过期事件自动触发方法及*** | |
US20150074070A1 (en) | System and method for reconciling transactional and non-transactional operations in key-value stores | |
CN111581239A (zh) | 缓存刷新方法和电子设备 | |
CN104881454A (zh) | 参数的更新方法及*** | |
US20190057030A1 (en) | Method and device for cache management | |
CN115328406A (zh) | 数据的写入和获取方法、装置、电子设备及计算机介质 | |
CN115729912A (zh) | 数据库访问***、方法、计算机设备和存储介质 | |
CN109873861B (zh) | 跨区块链节点的交互方法及装置、存储介质及电子设备 | |
US20200233799A1 (en) | Method, apparatus, and computer program product for managing storage system | |
CN111190899A (zh) | 一种埋点数据处理方法、装置、服务器及存储介质 | |
CN109558251B (zh) | 页面结构信息修改的方法及终端 | |
US10558502B2 (en) | Software application runtime having dynamic evaluation functions and parameters | |
CN114253988B (zh) | 基于版本的数据更新方法、装置、电子设备及存储介质 | |
CN113495854A (zh) | 主机-设备***中实现或管理缓存一致性的方法和*** | |
CN112395437B (zh) | 一种3d模型的加载方法、装置、电子设备及存储介质 | |
CN110674426B (zh) | 网页行为上报方法和装置 | |
CN112559560A (zh) | 元数据读取方法及装置、更新方法及装置、存储装置 | |
US7251660B2 (en) | Providing mappings between logical time values and real time values in a multinode system | |
CN115658171A (zh) | 一种轻量级解决java分布式应用配置动态刷新的方法及*** | |
CN112306413B (zh) | 用于访问内存的方法、装置、设备以及存储介质 | |
CN112711602B (zh) | 一种存储过程的运行方法、装置,数据库***及存储介质 | |
CN112748861B (zh) | 用于提供信息的方法、电子设备和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |