一种实现缓存数据同步的方法及系统技术方案

技术编号:18050087 阅读:50 留言:0更新日期:2018-05-26 08:06
本发明专利技术公开了一种实现缓存数据同步的方法,用于提高缓存之间进行数据同步的速度,该方法包括:第一缓存向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新;所述第一缓存对本地保存的第一数据进行更新或者将本地保存的所述第一数据删除;所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据已更新的提示信息。本发明专利技术还公开了一种实现缓存数据同步的系统。

【技术实现步骤摘要】
一种实现缓存数据同步的方法及系统
本专利技术涉及互联网
,具体涉及一种实现缓存数据同步的方法及系统。
技术介绍
目前为了减少对数据库的直接访问,可以将数据库中的数据放入缓存中,在需要获取数据时直接从缓存中获取数据,以提高数据的读取速度。在现有技术中,如果数据库中的数据发生了变化,可以使用反向同步的方式对各个缓存中的数据进行同步,即反向同步模块首先从数据库中通过读取日志以获得数据的修改信息,再由反向同步模块向各个缓存发送同步包,以使各个缓存在接收到同步包后删除所修改的数据,实现缓存数据的同步。但是,上述反向同步的方式耗时较长,如果用户在访问某一个缓存的数据时,而此时反向同步模块发送的同步包尚未到达该缓存,则本次用户就会访问到缓存中现有的过期脏数据。
技术实现思路
有鉴于此,本专利技术提供一种实现缓存数据同步的方法及系统,以解决现有技术中数据库向缓存反向同步方式下引发的同步时间过长导致用户可能访问到脏数据的技术问题。为解决上述问题,本专利技术提供的技术方案如下:一种实现缓存数据同步的方法,所述方法包括:第一缓存向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新;所述第一缓存对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据已更新的提示信息。相应的,所述方法还包括:反向同步模块从所述数据库读取到所述第一数据的修改信息后,向所述第一缓存发送所述第一同步包,以使所述第一缓存在接收到所述第一同步包后将本地保存的所述第一数据删除;向所述第二缓存发送所述第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除。相应的,所述方法还包括:所述第一缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;所述反向同步模块在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;所述第二缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;所述反向同步模块在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。相应的,所述方法还包括:所述第一缓存接收对第二数据的查询信息;如果所述第一缓存中不存在所述第二数据,所述第一缓存从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,以使所述第二缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。相应的,所述方法还包括:所述第二缓存接收对第二数据的查询信息;如果所述第二缓存中不存在所述第二数据,所述第二缓存从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,以使所述第一缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。一种实现缓存数据同步的系统,所述系统包括:第一缓存、第二缓存以及数据库;所述第一缓存,用于向所述数据库发送第一数据的修改信息;对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;向第二缓存发送第一同步包,所述第一同步包中包括所述第一数据已更新的提示信息;所述数据库,用于根据所述第一数据的修改信息对所述第一数据进行更新;所述第二缓存,用于在接收到所述第一同步包后将本地保存的所述第一数据删除。相应的,所述系统还包括:反向同步模块,用于从所述数据库读取所述第一数据的修改信息;向所述第一缓存发送所述第一同步包;向所述第二缓存发送所述第一同步包;所述第一缓存,还用于在接收到所述第一同步包后将本地保存的所述第一数据删除;所述第二缓存,还用于在接收到所述第一同步包后将本地保存的所述第一数据删除。相应的,所述第一缓存,还用于在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;所述第二缓存,还用于在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;所述反向同步模块,还用于在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。相应的,所述第一缓存,还用于接收对第二数据的查询信息;如果所述第一缓存中不存在所述第二数据,从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,所述第二同步包中包括所述第二数据;所述第二缓存,还用于在接收到所述第二同步包后获取所述第二数据。相应的,所述第二缓存,还用于接收对第二数据的查询信息;如果所述第二缓存中不存在所述第二数据,从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,所述第二同步包中包括所述第二数据;所述第一缓存,还用于在接收到所述第二同步包后获取所述第二数据。由此可见,本专利技术实施例具有如下有益效果:本专利技术实施例在第一缓存将第一数据的修改信息发送给数据库之后,更新或删除本地的第一数据,同时向第二缓存发送第一同步包,以使第二缓存也删除本地的第一数据,通过缓存之间发送同步包将已经修改的数据在各个缓存中均删除,由于缓存间通信速度较快,有效降低了缓存同步数据的时间,从而减少缓存在为更新之前被用户读取到的可能性,降低了用户读取到脏数据的可能性。附图说明图1为本专利技术实施例的应用场景示意图;图2为本专利技术实施例的系统架构示意图;图3为本专利技术实施例的应用场景硬件示意图;图4为本专利技术实施例中提供的实现缓存数据同步的方法实施例一的流程图;图5为本专利技术实施例中提供的实现缓存数据同步的方法实施例二的流程图;图6为本专利技术实施例中提供的实现缓存数据同步的方法实施例的系统架构流程图;图7为本专利技术实施例中提供的实现缓存数据同步的装置实施例的示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术实施例作进一步详细的说明。参见图1所示,首先对本专利技术实施例中提供的实现缓存数据同步的方法及装置的应用场景进行说明。在实现某一业务逻辑服务的系统中,可以包括业务层、数据处理层以及数据存储层。业务层中可以包括业务程序,业务程序是使用缓存和数据库来对外提供具体业务逻辑服务的程序。数据处理层中可以包括多个缓存,缓存例如共享内存、redis、memcached等,其中redis是一个开源的、支持网络、可基于内存亦可持久化的日志型、Key-Value(键-值)数据库,memcached是一个高性能的分布式内存对象缓存系统,用于动态网页应用以减轻数据库负载。数据存储层中可以包括反向同步模块以及数据库,反向同步模块可以从数据库向缓存做数据同步,相对于经典的缓存向数据库同步数据而言,称之为反向同步,数据库一般可以指mysql等结构化数据库。业务程序可以运行在客户端或者服务器中,例如,客户端中的业务程序需要修改用户的配置数据,用户可以通过缓存将配置数据的修改信息提交给数本文档来自技高网...
一种实现缓存数据同步的方法及系统

【技术保护点】
一种实现缓存数据同步的方法,其特征在于,所述方法包括:第一缓存向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新;所述第一缓存对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据已更新的提示信息。

【技术特征摘要】
1.一种实现缓存数据同步的方法,其特征在于,所述方法包括:第一缓存向数据库发送第一数据的修改信息,以使所述数据库根据所述第一数据的修改信息对所述第一数据进行更新;所述第一缓存对本地保存的所述第一数据进行更新或者将本地保存的所述第一数据删除;所述第一缓存向第二缓存发送第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除,所述第一同步包中包括所述第一数据已更新的提示信息。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:反向同步模块从所述数据库读取到所述第一数据的修改信息后,向所述第一缓存发送所述第一同步包,以使所述第一缓存在接收到所述第一同步包后将本地保存的所述第一数据删除;向所述第二缓存发送所述第一同步包,以使所述第二缓存在接收到所述第一同步包后将本地保存的所述第一数据删除。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:所述第一缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;所述反向同步模块在超过预设时间未接收到所述第一缓存发送的所述第一数据对应的修改确认信息时,再次向所述第一缓存发送所述第一同步包;所述第二缓存在接收到所述反向同步模块发送的所述第一同步包后,向所述反向同步模块发送所述第一数据对应的修改确认信息;所述反向同步模块在超过预设时间未接收到所述第二缓存发送的所述第一数据对应的修改确认信息时,再次向所述第二缓存发送所述第一同步包。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第一缓存接收对第二数据的查询信息;如果所述第一缓存中不存在所述第二数据,所述第一缓存从所述数据库获取所述第二数据,并向所述第二缓存发送第二同步包,以使所述第二缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第二缓存接收对第二数据的查询信息;如果所述第二缓存中不存在所述第二数据,所述第二缓存从所述数据库获取所述第二数据,并向所述第一缓存发送第二同步包,以使所述第一缓存在接收到所述第二同步包后获取所述第二数据,所述第二同步包中包括所述第二数据...

【专利技术属性】
技术研发人员:朱辉云郭计伟胡育辉陈焕葵张少愚覃竞才
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1