数据库缓存数据的刷新方法及其系统的制作方法

文档序号:9810685阅读:440来源:国知局
数据库缓存数据的刷新方法及其系统的制作方法
【技术领域】
[0001]本发明涉及数据库领域,特别是一种数据库缓存数据的刷新方法及其系统。
【背景技术】
[0002]在数据库读写分离的场景下,从库数据复制会有一定的延时,而缓存的数据来源是从库,当数据有修改、需要刷新缓存的时候,需要等待较长的时间。
[0003]目前已有的方案中,通常是把修改的信息记录在主库中,然后用定时任务检查的方式检查从库中的数据是否有更新,若发现有更新就刷新缓存,否则继续等待任务检查,因此,需要开发人员花费较大的精力,增加定时任务检查的开发代码以实现缓存数据的刷新,从而提高了数据库缓存数据刷新的开发成本。

【发明内容】

[0004]针对上述现有技术中存在的数据库缓存数据刷新的开发成本较高的问题,本发明的目的在于提供一种数据库缓存数据的刷新方法及其系统,能够降低数据库缓存数据刷新的开发成本。
[0005]数据库缓存数据的刷新方法,包括:
[0006]接收主库数据更新的消息,所述消息包含本次更新的时间以及更新的数据对象,记所述时间为主库更新时间;
[0007]获取从库中相应数据对象的最近更新时间,记为从库更新时间,比较所述从库更新时间和所述主库更新时间;
[0008]若所述从库更新时间大于等于所述主库更新时间,根据所述消息执行缓存数据的刷新操作。
[0009]数据库缓存数据的刷新系统,包括:
[0010]消息接收模块,用于接收主库数据更新的消息,所述消息包含本次更新的时间以及更新的数据对象,记所述时间为主库更新时间;
[0011]消息比较模块,用于获取从库中相应数据对象的最近更新时间,记为从库更新时间,比较所述从库更新时间和所述主库更新时间;
[0012]数据刷新模块,用于若所述从库更新时间大于等于所述主库更新时间,根据所述消息执行缓存数据的刷新操作。
[0013]本发明的数据库缓存数据的刷新方法及其系统,通过接收包含本次更新的主库更新时间以及更新的数据对象的主库数据更新消息,获取从库中相应数据对象的从库更新时间,然后比较从库更新时间和所述主库更新时间,若所述从库更新时间大于等于所述主库更新时间,则根据所述消息执行缓存数据的刷新操作。因此,无需开发人员增加定时任务检查的开发代码就能实现缓存数据的刷新,从而降低数据库缓存数据刷新的开发成本。
【附图说明】
[0014]图1为一个实施例的数据库缓存数据的刷新方法的流程示意图;
[0015]图2为数据库缓存数据的刷新方法的一个实例图;
[0016]图3为一个实施例的数据库缓存数据的刷新系统的结构示意图。
【具体实施方式】
[0017]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0018]请参阅图1中一个实施例的数据库缓存数据的刷新方法的流程示意图。
[0019]—种数据库缓存数据的刷新方法,包括:
[0020]S102,接收主库数据更新的消息,所述消息包含本次更新的时间以及更新的数据对象,记所述时间为主库更新时间。
[0021]通过接收主库数据更新的消息,确定主库的更新时间以及更新的数据对象,为后续更新时间的比较提供基准。
[0022]S104,获取从库中相应数据对象的最近更新时间,记为从库更新时间,比较所述从库更新时间和所述主库更新时间。
[0023]通过获取从库中相应数据对象的最近更新时间,确定从库的更新时间,并对从库更新时间和主库更新时间作比较,判断从库中相应数据对象的更新情况,从而提高判断从库数据更新的便利性。
[0024]S106,若所述从库更新时间大于等于所述主库更新时间,根据所述消息执行缓存数据的刷新操作。
[0025]如果所述从库更新时间大于等于所述主库更新时间,说明从库中相应的数据对象在本次的更新中已经更新,则执行缓存数据的刷新操作,因此,通过主动执行缓存数据的刷新操作,从而缩短缓存数据的等待刷新时间,提高缓存数据的刷新效率。
[0026]本实施例中,通过接收包含本次更新的主库更新时间以及更新的数据对象的主库数据更新消息,获取从库中相应数据对象的从库更新时间,然后比较从库更新时间和所述主库更新时间,若所述从库更新时间大于等于所述主库更新时间,则根据所述消息执行缓存数据的刷新操作。因此,无需开发人员增加定时任务检查的开发代码就能实现缓存数据的刷新,从而降低数据库缓存数据刷新的开发成本。
[0027]在其中一个实施例中,所述比较所述从库更新时间和所述主库更新时间,之后包括:
[0028]若所述从库更新时间小于所述主库更新时间,将所述消息的标识存入预设的服务队列。
[0029]其中,所述消息的标识为本次主库数据更新的消息的标签,只需存储所述消息的标识即可,从而节省系统资源;所述服务队列用于存储所述消息的标识,并对所述消息的标识进行监控。
[0030]在其中一个实施例中,所述将所述消息的标识存入预设的服务队列,之后包括:
[0031]检测所述消息的标识存入所述服务队列的时间是否达到设定时长,若是,返回所述消息接收失败的响应,以重新接收所述消息。
[0032]通过检测,若所述消息的标识存入所述服务队列的时间达到设定时长,则返回所述消息接收失败的响应,以重新接收所述消息,并在重新接收到所述消息后,再次对从库的数据更新情况进行判定,提高从库数据更新的判定效率。
[0033]在其中一个实施例中,所述接收主库数据更新的消息,包括:
[0034]接收预设的消息队列发送的主库数据更新的消息,所述消息队列实时获取主库数据更新的消息,从而提高获取数据更新的消息的效率;
[0035]所述根据所述消息执行缓存数据的刷新操作,之后还包括,
[0036]向所述消息队列返回所述消息接收成功的响应,释放消息队列中相应消息的占用资源,从而提高消息队列的运行效率;
[0037]所述返回所述消息接收失败的响应,以重新接收所述消息,包括,
[0038]向所述消息队列返回所述消息接收失败的响应,并接收所述消息队列重新发送的所述消息,从而继续对从库的数据更新情况进行判定,提高从库数据更新的判定效率。
[0039]图2为数据库缓存数据的刷新方法的一个实例图,结合图2所示,下面以一具体实例对本发明数据库缓存数据的刷新方法实施例进行进一步的说明。
[0040]具体地,在更新组件202与处理组件203间设置了一消息队列204。当主库200数据有更新时,更新组件202发送更新缓存的通知消息给消息队列204,所述消息包含主库更新时间以及更新的数据对象;处理组件203接收所述消息队列204转发的更新消息,获取从库201中相应数据对象的最近更新时间(记为从库更新时间),并比较所述从库更新时间和所述主库更新时间,若所述从库更新时间大于等于所述主库更新时间,则处理组件203根据所述消息执行缓存数据的刷新操作,并向所述消息队列204返回所述消息接收成功的响应;否贝1J,将所述消息的标识存入预设的服务队列205;检测所述消息的标识存入所述服务队列205的时间是否达到120秒,若是,向所述消息队列204返回所述消息接收失败的响应,并将该消息重新放回消息队列204中,处理组件203将重新接收所述消息,充分利用了消息队列的延迟确认机制,使缓存刷新变得简单和高效,有利于实现需要异步刷新缓存的场景。
[0041 ]在其中一个实施例中,所述消息队列为RabbitMQ队列,所述设定时长为120秒。
[0042]所述RabbitMQ队列性能强大、易于使用,用于本实施例中更能提高消息队列的可操作性;120秒的设定时长在提高从库数据更新的判定效率的同时,使得判定的频率不过于密集,从而避免占用过多的系统资源。
[0043]本发明还提供一种数据库缓存数据的刷新系统,如图3所示,包括:
[0044]消息接收模块300,用于接收主库数据更新的消息,所述消息包含本次更新的时间以及更新的数据对象,记所述时间为主库更新时间。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1