技术新讯 > 计算推算,计数设备的制造及其应用技术 > 缓存刷新方法、装置、设备、计算机程序产品及存储介质与流程  >  正文

缓存刷新方法、装置、设备、计算机程序产品及存储介质与流程

  • 国知局
  • 2024-09-05 14:38:08

本发明涉及缓存,特别是涉及一种缓存刷新方法、装置、设备、计算机程序产品及存储介质。

背景技术:

1、随着业务规模的扩大,数据库的访问压力不断增加,单纯依赖数据库无法满足高并发、低延迟的业务需求,为此缓存技术应运而生,通过缓存可以存储常用数据来提高读写性能,为了使得相关业务正常进行,需要保证数据库与缓存之间的数据一致性,然而相关技术中缺少一种成熟的方法,导致难以高效的实现数据库与缓存之间的数据一致性,且可能需要侵入用户业务。

2、因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。

技术实现思路

1、本发明的目的是提供一种缓存刷新方法、装置、设备、计算机程序产品及存储介质,由于可通过数据库实时的读写操作日志对缓存数据进行刷新,因此不但提升了缓存刷新效率,且避免了侵入用户业务。

2、为解决上述技术问题,本发明提供了一种缓存刷新方法,应用于计算机系统,包括:

3、对于数据库实时的读写操作日志中的读写操作事件,确定出所述读写操作事件的特征信息,并将所述读写操作事件的数据转换为序列化数组,其中,所述特征信息包括所属数据库表的表名称以及事件类型;

4、若所述读写操作事件所属数据库表属于预指定的目标数据库表,根据所述读写操作事件的序列化数组以及所述目标数据库表的表结构信息,生成与所述读写操作事件对应的键值对集合,其中,所述键值对集合中包括多个键值对,任一所述键值对包括:所述读写操作事件中的单个字段值及其对应的字段名;

5、根据所述读写操作事件在所属的数据库表中的主键信息,确定出位于缓存中的与所述读写操作事件对应的缓存数据;

6、基于所述读写操作事件的键值对集合,对所述读写操作事件对应的缓存数据执行与所述读写操作事件的事件类型对应的刷新操作。

7、另一方面,所述缓存刷新方法还包括:

8、响应于缓存重置指令,阻塞第一线程的刷新操作;

9、将缓存清空后,将数据库中的各个目标数据库表的数据写入缓存;

10、解除对于所述第一线程的刷新操作的阻塞;

11、其中,所述第一线程为执行缓存刷新操作的线程,所述缓存刷新操作指:基于所述读写操作事件的键值对集合,对所述读写操作事件对应的缓存数据执行与所述读写操作事件的事件类型对应的刷新操作。

12、另一方面,响应于缓存重置指令,阻塞第一线程的刷新操作包括:

13、响应于缓存重置指令,向缓存发送第一数值的信号量,以便缓存识别到第一数值的信号量后阻塞第一线程的刷新操作;

14、解除对于所述第一线程的刷新操作的阻塞包括:

15、向缓存发送第二数值的信号量,以便缓存识别到第二数值的信号量后解除对于所述第一线程的刷新操作的阻塞。

16、另一方面,缓存重置指令包括第一重置指令和/或第二重置指令;

17、所述第一重置指令为:在一天中的预设时刻自动生成的重置指令;

18、所述第二重置指令为:通过人机界面接收到的重置指令。

19、另一方面,所述缓存以及所述数据库均连通至预设接口软件,以便各个应用服务通过所述预设接口软件从所述缓存或所述数据库中进行数据调取;

20、其中,所述预设接口软件包括软件开发工具包。

21、另一方面,所述缓存刷新方法还包括:

22、当应用服务通过所述预设接口软件发送的读请求命中缓存后,将命中的目标缓存数据写入第二消息队列;

23、判断所述数据库中是否存在与所述目标缓存数据对应的数据库数据;

24、若不存在,将所述目标缓存数据从缓存中删除;

25、若存在,判断所述目标缓存数据是否与所述数据库中与所述目标缓存数据对应的数据库数据一致;

26、若不一致,以所述数据库数据为基准更新缓存中的所述目标缓存数据。

27、另一方面,应用于计算机系统中的任一节点;

28、所述缓存刷新方法还包括:

29、响应于每隔预设周期产生的心跳信号,为服务标识序列中与自身对应的服务标识的过期时间增加预设时长,其中,服务标识序列中包括有序排列的多个节点的服务标识,所述过期时间不大于零的服务标识处于失效状态;

30、对于数据库实时的读写操作日志中的读写操作事件,确定出所述读写操作事件的特征信息,并将所述读写操作事件的数据转换为序列化数组包括:

31、判断自身对应的服务标识在所述服务标识序列中是否处于首位;

32、若处于首位,则判定自身为主副本,对于数据库实时的读写操作日志中的读写操作事件,确定出所述读写操作事件的特征信息,并将所述读写操作事件的数据转换为序列化数组。

33、另一方面,对于数据库实时的读写操作日志中的读写操作事件,确定出所述读写操作事件的特征信息,并将所述读写操作事件的数据转换为序列化数组包括:

34、以数据库的从节点的身份,请求所述数据库中实时的读写操作日志;

35、通过所述读写操作日志中的所述读写操作事件的数据,确定出所述读写操作事件的事件类型;

36、通过所述读写操作日志中位于所述读写操作事件之前的表映射事件,确定出所述读写操作事件所属数据库表的表名称;

37、将所述读写操作事件的数据转换为序列化数组;

38、其中,所述读写操作事件的事件类型包括删除事件、插入事件与更新事件。

39、另一方面,基于所述读写操作事件的键值对集合,对所述读写操作事件对应的缓存数据执行与所述读写操作事件的事件类型对应的刷新操作包括:

40、若所述读写操作事件的事件类型为删除事件,将所述读写操作事件对应的缓存数据删除;

41、若所述读写操作事件的事件类型为插入事件,将所述读写操作事件的键值对集合以及所述主键信息,作为缓存数据写入缓存;

42、若所述读写操作事件的事件类型为更新事件,将所述读写操作事件的键值对集合以及所述主键信息,覆盖至缓存中与所述读写操作事件对应的缓存数据;

43、在写入事件对应的写缓存操作失败时,将写缓存失败的写入事件的主键信息加入第一消息队列,以便异步线程将所述第一消息队列中的所述主键信息在缓存中对应的缓存数据删除,其中,写入事件包括插入事件与更新事件。

44、另一方面,若所述读写操作事件所属数据库表属于预指定的目标数据库表,根据所述读写操作事件的序列化数组以及所述目标数据库表的表结构信息,生成与所述读写操作事件对应的键值对集合包括:

45、若所述读写操作事件所属数据库表属于预指定的目标数据库表,从所述读写操作事件所属的目标数据库表的表结构信息中,确定出字段名序列,其中,所述字段名序列中包括多个有序排列的字段名,所述字段名为所述读写操作事件所属的目标数据库表中的字段名,所述字段名在所述字段名序列中的次序等于所述字段名在所属的目标数据库表的各个字段名中的次序;

46、若所述读写操作事件为删除事件,根据所述删除事件对应的序列化数据与所述字段名序列,生成与所述删除事件对应的第一键值对集合,其中,所述删除事件对应的序列化数据为所述删除事件所删除的数据库表中的一行数据,所述第一键值对集合包括多个键值对,每个键值对包括所述删除事件所删除的单个字段值及其对应的字段名;

47、若所述读写操作事件为插入事件,根据所述插入事件对应的序列化数据与所述字段名序列,生成与所述插入事件对应的第二键值对集合,其中,所述插入事件对应的序列化数据为所述插入事件向数据库表中插入的一行数据,所述第二键值对集合包括多个键值对,每个键值对包括所述插入事件所插入的单个字段值及其对应的字段名;

48、若所述读写操作事件为更新事件,根据所述更新事件对应的序列化数据与所述字段名序列,生成与所述更新事件对应的第三键值对集合与第四键值对集合,其中,所述更新事件对应的序列化数据为所述更新事件在数据库表中更新的目标行数据,所述第三键值对集合以及所述第四键值对集合均包括多个键值对,所述第三键值对集合中的任一个键值对包括:所述目标行数据被更新之前的单个字段值及其对应的字段名,所述第四键值对集合中的任一个键值对包括:所述目标行数据被更新之后的单个字段值及其对应的字段名。

49、另一方面,若所述读写操作事件所属数据库表属于预指定的目标数据库表,根据所述读写操作事件的序列化数组以及所述目标数据库表的表结构信息,生成与所述读写操作事件对应的键值对集合之后,所述缓存刷新方法还包括:

50、基于所述读写操作事件的特征信息以及所述读写操作事件对应的键值对集合,构建具备预设结构的存储对象;

51、其中,所述存储对象包括第一存储位置以及第二存储位置,所述第一存储位置用于存储所述特征信息,所述第二存储位置中包括前置数据存储位置与后置数据存储位置,所述前置数据存储位置用于存储读写操作事件发生前的数据对应的键值对集合,所述后置数据存储位置用于存储读写操作事件发生后的数据对应的键值对集合;

52、根据所述读写操作事件在所属的数据库表中的主键信息,确定出位于缓存中的与所述读写操作事件对应的缓存数据包括:

53、根据所述存储对象中的第一存储位置中的表名称对应的数据库表中的主键信息,确定出位于缓存中的与所述读写操作事件对应的缓存数据。

54、为解决上述技术问题,本发明还提供了一种缓存刷新装置,包括:

55、第一确定模块,用于对于数据库实时的读写操作日志中的读写操作事件,确定出所述读写操作事件的特征信息,并将所述读写操作事件的数据转换为序列化数组,其中,所述特征信息包括所属数据库表的表名称以及事件类型;

56、第一生成模块,用于若所述读写操作事件所属数据库表属于预指定的目标数据库表,根据所述读写操作事件的序列化数组以及所述目标数据库表的表结构信息,生成与所述读写操作事件对应的键值对集合,其中,所述键值对集合中包括多个键值对,任一所述键值对包括:所述读写操作事件中的单个字段值及其对应的字段名;

57、第二确定模块,用于根据所述读写操作事件在所属的数据库表中的主键信息,确定出位于缓存中的与所述读写操作事件对应的缓存数据;

58、第一刷新模块,用于基于所述读写操作事件的键值对集合,对所述读写操作事件对应的缓存数据执行与所述读写操作事件的事件类型对应的刷新操作。

59、为解决上述技术问题,本发明还提供了一种缓存刷新设备,包括:

60、存储器,用于存储计算机程序;

61、处理器,用于执行所述计算机程序时实现如上所述缓存刷新方法的步骤。

62、为解决上述技术问题,本发明还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上所述缓存刷新方法的步骤。

63、为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述缓存刷新方法的步骤。

64、有益效果:本发明提供了一种缓存刷新方法,考虑到数据库实时的读写操作日志中反映了数据库数据的最新状态,且对于读写操作日志的访问避免了侵入用户业务,因此本发明中首先可基于数据库实时的读写操作日志,确定出读写操作事件的特征信息,并将读写操作事件的数据转换为序列化数组,然后根据读写操作事件所属目标数据库表的表结构信息以及读写操作事件的序列化数组,生成与读写操作事件对应的键值对集合,接着便可以基于读写操作事件的键值对集合,对读写操作事件对应的缓存数据执行与读写操作事件的事件类型对应的刷新操作,由于可通过数据库实时的读写操作日志对缓存数据进行刷新,因此不但提升了缓存刷新效率,且避免了侵入用户业务。

65、本发明还提供了一种缓存刷新装置、设备、计算机程序产品及计算机可读存储介质,具有如上缓存刷新方法相同的有益效果。

本文地址:https://www.jishuxx.com/zhuanli/20240905/287414.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。