CN108073660B - 一种实现缓存数据同步的方法及系统 - Google Patents
一种实现缓存数据同步的方法及系统 Download PDFInfo
- Publication number
- CN108073660B CN108073660B CN201611034667.9A CN201611034667A CN108073660B CN 108073660 B CN108073660 B CN 108073660B CN 201611034667 A CN201611034667 A CN 201611034667A CN 108073660 B CN108073660 B CN 108073660B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- synchronization
- synchronization packet
- packet
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- 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)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种实现缓存数据同步的方法,用于提高缓存之间进行数据同步的速度,该方法包括:第一缓存向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新;所述第一缓存对本地保存的第一数据进行更新或者将本地保存的所述第一数据删除;所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据已更新的提示信息。本发明还公开了一种实现缓存数据同步的系统。
Description
技术领域
本发明涉及互联网技术领域,具体涉及一种实现缓存数据同步的方法及系统。
背景技术
目前为了减少对数据库的直接访问,可以将数据库中的数据放入缓存中,在需要获取数据时直接从缓存中获取数据,以提高数据的读取速度。
在现有技术中,如果数据库中的数据发生了变化,可以使用反向同步的方式对各个缓存中的数据进行同步,即反向同步模块首先从数据库中通过读取日志以获得数据的修改信息,再由反向同步模块向各个缓存发送同步包,以使各个缓存在接收到同步包后删除所修改的数据,实现缓存数据的同步。但是,上述反向同步的方式耗时较长,如果用户在访问某一个缓存的数据时,而此时反向同步模块发送的同步包尚未到达该缓存,则本次用户就会访问到缓存中现有的过期脏数据。
发明内容
有鉴于此,本发明提供一种实现缓存数据同步的方法及系统,以解决现有技术中数据库向缓存反向同步方式下引发的同步时间过长导致用户可能访问到脏数据的技术问题。
为解决上述问题,本发明提供的技术方案如下:
一种实现缓存数据同步的方法,所述方法包括:
第一缓存向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新;
所述第一缓存对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;
所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据已更新的提示信息。
相应的,所述方法还包括:
反向同步模块从所述数据库读取到所述第一数据的修改信息后,向所述第一缓存发送所述第一同步包,以使所述第一缓存在接收到所述第一同步包后将本地保存的所述第一数据删除;向所述第二缓存发送所述第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除。
相应的,所述方法还包括:
所述第一缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述反向同步模块在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;
所述第二缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述反向同步模块在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。
相应的,所述方法还包括:
所述第一缓存接收对第二数据的查询信息;
如果所述第一缓存中不存在所述第二数据,所述第一缓存从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,以使所述第二缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。
相应的,所述方法还包括:
所述第二缓存接收对第二数据的查询信息;
如果所述第二缓存中不存在所述第二数据,所述第二缓存从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,以使所述第一缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。
一种实现缓存数据同步的系统,所述系统包括:
第一缓存、第二缓存以及数据库;
所述第一缓存,用于向所述数据库发送第一数据的修改信息;对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;向第二缓存发送第一同步包,所述第一同步包中包括所述第一数据已更新的提示信息;
所述数据库,用于根据所述第一数据的修改信息对所述第一数据进行更新;
所述第二缓存,用于在接收到所述第一同步包后将本地保存的所述第一数据删除。
相应的,所述系统还包括:
反向同步模块,用于从所述数据库读取所述第一数据的修改信息;向所述第一缓存发送所述第一同步包;向所述第二缓存发送所述第一同步包;
所述第一缓存,还用于在接收到所述第一同步包后将本地保存的所述第一数据删除;
所述第二缓存,还用于在接收到所述第一同步包后将本地保存的所述第一数据删除。
相应的,所述第一缓存,还用于在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述第二缓存,还用于在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述反向同步模块,还用于在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。
相应的,所述第一缓存,还用于接收对第二数据的查询信息;如果所述第一缓存中不存在所述第二数据,从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,所述第二同步包中包括所述第二数据;
所述第二缓存,还用于在接收到所述第二同步包后获取所述第二数据。
相应的,所述第二缓存,还用于接收对第二数据的查询信息;如果所述第二缓存中不存在所述第二数据,从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,所述第二同步包中包括所述第二数据;
所述第一缓存,还用于在接收到所述第二同步包后获取所述第二数据。
由此可见,本发明实施例具有如下有益效果:
本发明实施例在第一缓存将第一数据的修改信息发送给数据库之后,更新或删除本地的第一数据,同时向第二缓存发送第一同步包,以使第二缓存也删除本地的第一数据,通过缓存之间发送同步包将已经修改的数据在各个缓存中均删除,由于缓存间通信速度较快,有效降低了缓存同步数据的时间,从而减少缓存在为更新之前被用户读取到的可能性,降低了用户读取到脏数据的可能性。
附图说明
图1为本发明实施例的应用场景示意图;
图2为本发明实施例的系统架构示意图;
图3为本发明实施例的应用场景硬件示意图;
图4为本发明实施例中提供的实现缓存数据同步的方法实施例一的流程图;
图5为本发明实施例中提供的实现缓存数据同步的方法实施例二的流程图;
图6为本发明实施例中提供的实现缓存数据同步的方法实施例的系统架构流程图;
图7为本发明实施例中提供的实现缓存数据同步的装置实施例的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
参见图1所示,首先对本发明实施例中提供的实现缓存数据同步的方法及装置的应用场景进行说明。在实现某一业务逻辑服务的系统中,可以包括业务层、数据处理层以及数据存储层。业务层中可以包括业务程序,业务程序是使用缓存和数据库来对外提供具体业务逻辑服务的程序。数据处理层中可以包括多个缓存,缓存例如共享内存、redis、memcached等,其中redis是一个开源的、支持网络、可基于内存亦可持久化的日志型、Key-Value(键-值)数据库,memcached是一个高性能的分布式内存对象缓存系统,用于动态网页应用以减轻数据库负载。数据存储层中可以包括反向同步模块以及数据库,反向同步模块可以从数据库向缓存做数据同步,相对于经典的缓存向数据库同步数据而言,称之为反向同步,数据库一般可以指mysql等结构化数据库。
业务程序可以运行在客户端或者服务器中,例如,客户端中的业务程序需要修改用户的配置数据,用户可以通过缓存将配置数据的修改信息提交给数据库,以使数据库更新保存的该用户的配置数据,即数据库中保存的均是修改后的最新数据。在某些应用场景中,用户还需要查询配置数据,此时首先会在缓存中进行查询,这样就需要保证在缓存中不被用户访问到修改之前的配置数据。继续基于上述举例说明,在现有技术中,会通过反向同步模块从数据库读取对该配置数据的修改信息,反向同步模块再将对该配置数据的修改信息发送给各个缓存,缓存在接收到对该配置数据的修改信息后,将保存在本地的该配置数据删除,以保证用户在缓存中不会查询到修改之前的配置数据,如果用户在缓存中未查找到该配置数据,可以从数据库中读取最新的配置数据,同时将最新的配置数据再保存到各个缓存中,以使用户在之后再次查询该配置数据时可以直接从缓存中查询到最新的配置数据。但是,在现有技术中,反向同步模块从数据库读取对该配置数据的修改信息涉及数据库的读取,速度较慢,反向同步模块再将该配置数据的修改信息发送给各个缓存,反向同步的时间大约会耗时2-7秒,如果用户在缓存将原始的配置数据删除之后进行了该配置数据的查询,则用户获得的就是已过期的脏数据。
为此,本发明实施例中提供的一种实现缓存数据同步的方法及系统,就是为了解决现有技术中数据库向缓存反向同步方式下引发的同步时间过长导致用户可能访问到脏数据的技术问题。
参见图2所示,本发明实施例中提供的实现缓存数据同步的方法,可以应用在实现缓存数据同步的系统,实现缓存数据同步的系统可以包括第一缓存、第二缓存、数据库,该实现缓存数据同步的系统还可以包括反向同步模块。其中,第一缓存可以理解为在某一次缓存数据同步的过程中将数据的修改信息提交给数据库的缓存,第二缓存可以理解为除第一缓存之外的其他缓存,第二缓存可以为一个或多个,可以理解的是,某个第二缓存可以在另一次缓存数据同步的过程中转换为第一缓存,类似的,第一缓存也可以转换为第二缓存,即第一缓存以及第二缓存并不特指某一个固定的缓存。参见图3所示,示出了本发明实施例中实现缓存数据同步的系统的硬件环境示意图,在实际应用中各个缓存可以装载在不同的缓存服务器中,即第一缓存以及第二缓存均可以装载在不同的缓存服务器中,数据库可以装载在数据库服务器中,反向同步模块可以与数据库装载在相同的数据库服务器中,也可以装载在另外的数据库服务器中。
参见图4所示,示出了本发明实施例中提供的实现缓存数据同步的方法实施例一,可以包括以下步骤:
步骤401:第一缓存向数据库发送第一数据的修改信息,以使数据库根据第一数据的修改信息对第一数据进行更新。
缓存中可以包括进程部分以及数据缓存部分,用户可以通过第一缓存的进程部分向数据库发送第一数据的修改信息,其中,第一数据可以理解为待修改数据,而第一数据的修改信息可以包括第一数据的标识以及对第一数据的修改方式,第一数据的修改信息也可以包括第一数据的标识以及更新后第一数据的取值。数据库在接收到第一数据的修改信息后通过第一数据的标识查找到第一数据并对第一数据进行更新,以保证数据库中备份的均为最新的数据。
步骤402:第一缓存对本地保存的第一数据进行更新或者将本地保存的第一数据删除。
由于是由第一缓存向数据库发送的第一数据的修改信息,因此第一缓存可以同时对本地保存的第一数据进行更新,用户此时如果访问第一缓存可以直接访问到最新的第一数据,或者,第一缓存也可以将本地保存的第一数据删除,以使第一缓存中不存在更新之前的第一数据。
步骤403:第一缓存向第二缓存发送第一同步包,以使第二缓存在接收到第一同步包后将本地保存的第一数据删除,第一同步包中包括第一数据已更新的提示信息。
由于第一数据在数据库中已经更新,此时其他缓存中保存的第一数据即为更新前的原始第一数据,也就是属于脏数据,不应该被用户访问到,因此在本实施例中第一缓存向各个第二缓存发送第一同步包,第一同步包中可以包括第一数据的标识以及第一数据已更新的提示信息,第二缓存在接收到第一同步包后可以通过第一数据的标识查找到第一数据,将本地保存的第一数据删除。此时如果第一同步包均发送成功的话各个缓存中都不存在原始的第一数据,保证了用户在此之后不会访问到脏数据,而同时在缓存之间发送第一同步包的速度很快,时延可以控制在1秒以内,大大降低了用户访问到脏数据的可能性。
这样,本发明实施例在第一缓存将第一数据的修改信息发送给数据库之后,更新或删除本地的第一数据,同时向第二缓存发送第一同步包,以使第二缓存也删除本地的第一数据,通过缓存之间发送同步包将已经修改的数据在各个缓存中均删除,由于缓存间通信速度较快,有效降低了缓存同步数据的时间,从而减少缓存在为更新之前被用户读取到的可能性,降低了用户读取到脏数据的可能性。
参见图5所示,示出了本发明实施例中提供的实现缓存数据同步的方法实施例二,可以包括以下步骤:
步骤401:第一缓存向数据库发送第一数据的修改信息,以使数据库根据第一数据的修改信息对第一数据进行更新。
步骤402:第一缓存对本地保存的第一数据进行更新或者将本地保存的第一数据删除。
步骤403:第一缓存向第二缓存发送第一同步包,以使第二缓存在接收到第一同步包后将本地保存的第一数据删除,第一同步包中包括第一数据已更新的提示信息。
在本实施例中,步骤401-403与上述实施例相同,相关说明可以参见上述实施例,在此不再赘述。
步骤501:反向同步模块从数据库读取第一数据的修改信息。
由于第一缓存不会确认第二缓存是否接收到第一同步包,那么就可能存在第二缓存未接收到第一同步包的情况,因此在第一缓存以及接收到第一同步包的第二缓存将本地保存的第一数据删除后,在本实施例中可以再执行一次反向同步过程,以保证第一缓存以及第二缓存均将本地保存的第一数据成功删除,同时,第一缓存以及第二缓存是否成功删除第一数据的确认过程由现有的反向同步模块实现,将对系统架构的调整降为最低。
步骤502:反向同步模块向第一缓存发送第一同步包,以使第一缓存在接收到第一同步包后将本地保存的第一数据删除。
在本发明的一些可能的实现方式中,第一缓存在接收到反向同步模块发送的第一同步包后,向反向同步模块发送第一数据对应的修改确认信息;反向同步模块在超过预设时间未接收到第一缓存发送的第一数据对应的修改确认信息时,再次向第一缓存发送第一同步包。
步骤503:反向同步模块向第二缓存发送第一同步包,以使第二缓存在接收到第一同步包后将本地保存的第一数据删除。
在本发明的一些可能的实现方式中,第二缓存在接收到反向同步模块发送的第一同步包后,向反向同步模块发送第一数据对应的修改确认信息;反向同步模块在超过预设时间未接收到第二缓存发送的第一数据对应的修改确认信息时,再次向第二缓存发送第一同步包。
也就是说,反向同步模块可以根据第一数据的修改信息生成第一同步包,向第一缓存以及第二缓存发送第一同步包,第一缓存以及第二缓存在接收到第一同步包后再次将本地保存的第一数据删除,在实际应用中,即使本地保存的第一数据已经被删除,也可以再次对第一数据标识对应的第一数据再次执行删除操作。第一缓存以及第二缓存在接收到第一同步包后会向反向同步模块返回第一数据对应的修改确认信息,如果反向同步模块未接收到第一数据对应的修改确认信息则会再次向未发送第一数据对应的修改确认信息的第一缓存或者第二缓存发送第一同步包,以保证第一同步包送达第一缓存以及第二缓存。
参见图6所示,在实际应用中,数据处理层中的任意一个缓存均可以为第一缓存也可以为第二缓存,任意一个缓存在向数据库发送第一数据的修改信息后,首先删除本地保存的第一数据,并向其他缓存发送第一同步包,使其他缓存删除本地保存的第一数据,反向同步模块从数据库读取到第一数据的修改信息后,可以向各个缓存均发送第一同步包,使各个缓存删除本地保存的第一数据,在提高缓存之间数据同步速度的同时,保证了各个缓存均执行了数据同步。
这样,本发明实施例在第一缓存将第一数据的修改信息发送给数据库之后,更新或删除本地的第一数据,同时向第二缓存发送第一同步包,以使第二缓存也删除本地的第一数据,通过缓存之间发送同步包将已经修改的数据在各个缓存中均删除,由于缓存间通信速度较快,有效降低了缓存同步数据的时间,从而减少缓存在为更新之前被用户读取到的可能性,降低了用户读取到脏数据的可能性。另外,通过反向同步模块再次向第一缓存以及第二缓存发送第一同步包,并通过接收第一数据对应的修改确认信息保证第一缓存以及第二缓存均接收到第一同步包,保证了第一缓存以及第二缓存不再保存有更新之前的脏数据,进一步低了用户读取到脏数据的可能性。
另外,在本发明的一些可能的实现方式中,基于上述各个实施例还可以包括:
第一缓存接收对第二数据的查询信息;
如果第一缓存中不存在第二数据,第一缓存从数据库获取第二数据,并向第二缓存发送第二同步包,以使第二缓存在接收到第二同步包后获取第二数据,第二同步包中包括第二数据。
类似的,在本发明的一些可能的实现方式中,还可以包括:
第二缓存接收对第二数据的查询信息;
如果第二缓存中不存在第二数据,第二缓存从数据库获取第二数据,并向第一缓存发送第二同步包,以使第一缓存在接收到第二同步包后获取第二数据,第二同步包中包括第二数据。
在实际应用中,用户还可以通过访问缓存获取数据,第二数据可以理解为用户需要获取的数据,用户可以访问第一缓存对第二数据进行查询,也可以访问第二缓存对第二数据进行查询,当第一缓存接收对第二数据的查询信息时,首先判断当前是否存在第二数据,如果第一缓存中不存在第二数据则代表在对第二数据进行更新后第一缓存中的保存的第二数据被删除了,则需要首先从数据库中读取第二数据保存到第一缓存中,第一缓存再通过向各个第二缓存发送包括第二数据的第二同步包,以使第二缓存均保存有第二数据,这样用户再次对第二数据进行查询时则无需读取数据库,直接从缓存中即可获得第二数据。当第二缓存接收对第二数据的查询信息时,与第一缓存接收对第二数据的查询信息时类似,在此不再重复进行说明。
参见图7所示,示出了本发明实施例中提供的实现缓存数据同步的系统实施例,可以包括:
第一缓存701、第二缓存702以及数据库703。
其中,第一缓存701,用于向数据库发送第一数据的修改信息;对本地保存的第一数据进行更新或者将本地保存的第一数据删除;向第二缓存发送第一同步包,第一同步包中包括第一数据已更新的提示信息。
数据库702,用于根据第一数据的修改信息对第一数据进行更新。
第二缓存703,用于在接收到第一同步包后将本地保存的第一数据删除。
在本发明的一些可能的实现方式中,本发明实施例中提供的实现缓存数据同步的系统实施例还可以包括:
反向同步模块用于从数据库读取第一数据的修改信息;向第一缓存发送第一同步包;向第二缓存发送第一同步包。
则第一缓存还可以用于在接收到第一同步包后将本地保存的第一数据删除;
第二缓存还可以用于在接收到第一同步包后将本地保存的第一数据删除。
在本发明的一些可能的实现方式中,第一缓存可以还用于在接收到反向同步模块发送的第一同步包后,向反向同步模块发送第一数据对应的修改确认信息;
第二缓存还可以用于在接收到反向同步模块发送的第一同步包后,向反向同步模块发送第一数据对应的修改确认信息;
反向同步模块还可以用于在超过预设时间未接收到第一缓存发送的第一数据对应的修改确认信息时,再次向第一缓存发送第一同步包;在超过预设时间未接收到第二缓存发送的第一数据对应的修改确认信息时,再次向第二缓存发送第一同步包。
在本发明的一些可能的实现方式中,第一缓存还可以用于接收对第二数据的查询信息;如果第一缓存中不存在第二数据,从数据库获取第二数据,并向第二缓存发送第二同步包,第二同步包中包括第二数据;
第二缓存还可以用于在接收到第二同步包后获取第二数据。
在本发明的一些可能的实现方式中,第二缓存还可以用于接收对第二数据的查询信息;如果第二缓存中不存在第二数据,从数据库获取第二数据,并向第一缓存发送第二同步包,第二同步包中包括第二数据;
第一缓存还可以用于在接收到第二同步包后获取第二数据。
本发明实施例中提供的实现缓存数据同步的系统实施例的应用原理可以为:
第一缓存向数据库发送第一数据的修改信息,以使数据库根据第一数据的修改信息对第一数据进行更新。第一缓存对本地保存的所述第一数据进行更新或者将本地保存的第一数据删除,并向第二缓存发送第一同步包,第一同步包中包括第一数据已更新的提示信息,以使第二缓存在接收到第一同步包后将本地保存的第一数据删除。
反向同步模块从数据库读取第一数据的修改信息,向第一缓存以及第二缓存发送第一同步包,以使第一缓存在接收到第一同步包后将本地保存的第一数据删除,第二缓存在接收到第一同步包后将本地保存的第一数据删除。同时,第一缓存以及第二缓存在接收到反向同步模块发送的第一同步包后,向反向同步模块发送第一数据对应的修改确认信息;反向同步模块在超过预设时间未接收到第一缓存发送的第一数据对应的修改确认信息时,再次向第一缓存发送第一同步包,在超过预设时间未接收到第二缓存发送的第一数据对应的修改确认信息时,再次向第二缓存发送第一同步包。
另外,第一缓存在接收到对第二数据的查询信息时,判断第一缓存中是否存在第二数据,如果第一缓存中不存在第二数据,则从数据库获取第二数据,并向第二缓存发送包括第二数据的第二同步包;而如果是第二缓存接收到对第二数据的查询信息,类似的,先判断第二缓存中是否存在第二数据,如果第二缓存中不存在第二数据,则从数据库获取第二数据,并向第一缓存发送包括第二数据的第二同步包。
这样,本发明实施例在第一缓存将第一数据的修改信息发送给数据库之后,更新或删除本地的第一数据,同时向第二缓存发送第一同步包,以使第二缓存也删除本地的第一数据,通过缓存之间发送同步包将已经修改的数据在各个缓存中均删除,由于缓存间通信速度较快,有效降低了缓存同步数据的时间,从而减少缓存在为更新之前被用户读取到的可能性,降低了用户读取到脏数据的可能性。另外,通过反向同步模块再次向第一缓存以及第二缓存发送第一同步包,并通过接收第一数据对应的修改确认信息保证第一缓存以及第二缓存均接收到第一同步包,保证了第一缓存以及第二缓存不再保存有更新之前的脏数据,进一步低了用户读取到脏数据的可能性。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种实现缓存数据同步的方法,其特征在于,所述方法包括:
通过第一缓存的进程部分向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新,所述第一数据为待修改数据;
所述第一缓存对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;
所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后,通过所述第一数据的标识查找到所述第一数据,将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据的标识,以及所述第一数据已更新的提示信息;
所述方法还包括:
反向同步模块从所述数据库读取到所述第一数据的修改信息后,向所述第一缓存发送所述第一同步包,以使所述第一缓存在接收到所述第一同步包后将本地保存的所述第一数据删除;向所述第二缓存发送所述第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述反向同步模块在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;
所述第二缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述反向同步模块在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一缓存接收对第二数据的查询信息;
如果所述第一缓存中不存在所述第二数据,所述第一缓存从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,以使所述第二缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第二缓存接收对第二数据的查询信息;
如果所述第二缓存中不存在所述第二数据,所述第二缓存从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,以使所述第一缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。
5.一种实现缓存数据同步的系统,其特征在于,所述系统包括:
第一缓存、第二缓存以及数据库;
所述第一缓存,用于利用进程部分向所述数据库发送第一数据的修改信息;对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;向第二缓存发送第一同步包,所述第一同步包中包括所述第一数据的标识,以及所述第一数据已更新的提示信息,所述第一数据为待修改数据;
所述数据库,用于根据所述第一数据的修改信息对所述第一数据进行更新;
所述第二缓存,用于在接收到所述第一同步包后,通过所述第一数据的标识查找到所述第一数据,将本地保存的所述第一数据删除;
所述系统还包括:
反向同步模块,用于从所述数据库读取所述第一数据的修改信息;向所述第一缓存发送所述第一同步包;向所述第二缓存发送所述第一同步包;
所述第一缓存,还用于在接收到所述第一同步包后将本地保存的所述第一数据删除;
所述第二缓存,还用于在接收到所述第一同步包后将本地保存的所述第一数据删除。
6.根据权利要求5所述的系统,其特征在于,
所述第一缓存,还用于在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述第二缓存,还用于在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;
所述反向同步模块,还用于在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。
7.根据权利要求5所述的系统,其特征在于,
所述第一缓存,还用于接收对第二数据的查询信息;如果所述第一缓存中不存在所述第二数据,从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,所述第二同步包中包括所述第二数据;
所述第二缓存,还用于在接收到所述第二同步包后获取所述第二数据。
8.根据权利要求5所述的系统,其特征在于,
所述第二缓存,还用于接收对第二数据的查询信息;如果所述第二缓存中不存在所述第二数据,从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,所述第二同步包中包括所述第二数据;
所述第一缓存,还用于在接收到所述第二同步包后获取所述第二数据。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行程序,所述计算机可执行程序被处理器加载并执行时,实现权利要求1-4任一项所述的实现缓存数据同步的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611034667.9A CN108073660B (zh) | 2016-11-18 | 2016-11-18 | 一种实现缓存数据同步的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611034667.9A CN108073660B (zh) | 2016-11-18 | 2016-11-18 | 一种实现缓存数据同步的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073660A CN108073660A (zh) | 2018-05-25 |
CN108073660B true CN108073660B (zh) | 2021-10-15 |
Family
ID=62161196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611034667.9A Active CN108073660B (zh) | 2016-11-18 | 2016-11-18 | 一种实现缓存数据同步的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108073660B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828980A (zh) * | 2019-02-19 | 2019-05-31 | 北京字节跳动网络技术有限公司 | 数据缓存方法、装置、终端及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944114A (zh) * | 2010-09-16 | 2011-01-12 | 深圳天源迪科信息技术股份有限公司 | 内存数据库和物理数据库间的数据同步方法 |
CN103942259A (zh) * | 2014-03-21 | 2014-07-23 | 浙江大学 | 一种数据库同步中实现数据缓存的方法 |
CN104156361A (zh) * | 2013-05-13 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种实现数据同步的方法及系统 |
CN104572689A (zh) * | 2013-10-17 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置及系统 |
CN104980455A (zh) * | 2014-04-02 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 一种基于云存储的多终端数据同步方法、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681020B2 (en) * | 2007-04-18 | 2010-03-16 | International Business Machines Corporation | Context switching and synchronization |
-
2016
- 2016-11-18 CN CN201611034667.9A patent/CN108073660B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944114A (zh) * | 2010-09-16 | 2011-01-12 | 深圳天源迪科信息技术股份有限公司 | 内存数据库和物理数据库间的数据同步方法 |
CN104156361A (zh) * | 2013-05-13 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种实现数据同步的方法及系统 |
CN104572689A (zh) * | 2013-10-17 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置及系统 |
CN103942259A (zh) * | 2014-03-21 | 2014-07-23 | 浙江大学 | 一种数据库同步中实现数据缓存的方法 |
CN104980455A (zh) * | 2014-04-02 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 一种基于云存储的多终端数据同步方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108073660A (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943594B (zh) | 数据获取方法和装置 | |
US10275347B2 (en) | System, method and computer program product for managing caches | |
CN106933854B (zh) | 短链接处理方法、装置及服务器 | |
EP3312733B1 (en) | Method, systems and storage medium for removing a distributed caching object | |
US8949535B1 (en) | Cache updating | |
US20190394217A1 (en) | Method, apparatus and system for anti-attacking in domain name system (dns) | |
US20140298313A1 (en) | Method, server, client and system for updating data | |
CN108429777B (zh) | 一种基于缓存的数据更新方法及服务器 | |
US8965862B2 (en) | Directory oplock | |
CN110928904A (zh) | 一种数据查询方法、装置及相关组件 | |
CN107153644B (zh) | 一种数据同步方法及装置 | |
CN111221469B (zh) | 同步缓存数据的方法、装置和系统 | |
US11249946B2 (en) | Path name cache for notifications of file changes | |
CN110908965A (zh) | 一种对象存储管理方法、装置、设备及存储介质 | |
WO2019000722A1 (zh) | 超文本标记语言网页加载方法及装置 | |
CN111597213A (zh) | 一种缓存方法、软件服务器及存储介质 | |
US12086129B2 (en) | Distributed data processing | |
CN112261090B (zh) | Web数据处理方法、装置、计算机设备和可读存储介质 | |
CN108073660B (zh) | 一种实现缓存数据同步的方法及系统 | |
CN110555040A (zh) | 一种数据缓存方法、装置及服务器 | |
CN115374133A (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 | |
WO2017092356A1 (zh) | 用于提供服务数据的服务器、方法及系统 | |
CN115658171A (zh) | 一种轻量级解决java分布式应用配置动态刷新的方法及系统 | |
CN111367921A (zh) | 数据对象的刷新方法及装置 | |
CN114125060B (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 |