缓存数据的处理方法、装置、计算机设备及存储介质与流程

文档序号:32481118发布日期:2022-12-09 22:41阅读:61来源:国知局
缓存数据的处理方法、装置、计算机设备及存储介质与流程

1.本技术涉及数据处理技术领域,尤其涉及缓存数据的处理方法、装置、计算机设备及存储介质。


背景技术:

2.高并发是在交易系统的常规项目中普遍需要考虑的问题。在高并发场景下,为了减缓交易系统的压力,传统的交易系统往往会使用缓存,用到的技术就是redis服务器。目前,交易系统在接收到数据请求时,首先会检查请求的数据是否在redis中,如果请求的数据在redis中,则直接把缓存的数据返回给相应的请求方,不再对数据库进行任何操作;而如果请求的数据不在redis中,则到数据库中查找请求的数据,并将从数据库中查找到的数据返回给相应的请求方,同时将数据缓存一份到redis中。然而,在高并发的情况下,当数据库中的数据发生更新时,无法保证数据库与redis的缓存数据之间的一致性。举例地,假设交易系统当前接收到了两个数据请求,一个请求a做查询操作,一个请求b做更新操作,那么会有如下情况产生,1.请求a查询出的数据是旧的数据,这时候请求b的更新操作还没有更新完成。2.请求b刚好删除了缓存,请求a查询缓存为空,又去查询了数据库,但是请求b还没有更新完成,导致请求a查询了旧的数据,从而造成数据混乱不能统一,新的数据与旧的数据之间存在延迟。


技术实现要素:

3.本技术实施例的目的在于提出一种缓存数据的处理方法、装置、计算机设备及存储介质,以解决现有当数据库中的数据发生更新时,无法保证数据库与redis的缓存数据之间的一致性的技术问题。
4.为了解决上述技术问题,本技术实施例提供一种缓存数据的处理方法,采用了如下所述的技术方案:
5.判断是否接收到第一用户触发的与数据库对应的数据更新操作;
6.若是,对redis服务器当前的第一缓存数据进行删除;
7.基于所述数据更新操作对所述数据库内的原始数据进行更新,得到目标数据;
8.获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间;
9.在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除。
10.进一步的,所述获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间的步骤,具体包括:
11.分别获取与所述预设项目对应的在预设时间周期内的所有读请求的第一耗时时间;
12.计算所有所述第一耗时时间的平均值,得到第二耗时时间;
13.获取预设的耗时数值;
14.计算所述第二耗时时间与所述耗时数值之间的和值;
15.将所述和值作为所述休眠时间。
16.进一步的,在所述在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除的步骤之后,还包括:
17.判断所述第二缓存数据是否删除失败;
18.若删除失败,获取与所述第二缓存数据对应的第一关键值;
19.将所述第一关键值发送至预设的消息队列中,以在所述消息队列中记录与所述第二缓存数据对应的数据删除任务;
20.从所述消息队列中获取所述第一关键值;
21.对基于所述第一关键值查询得到的所述第二缓存数据进行删除重试处理。
22.进一步的,所述获取与所述第二缓存数据对应的第一关键值的步骤,具体包括:
23.启动预设的订阅程序;
24.基于所述订阅程序获取所述数据库的日志文件;
25.从所述日志文件中获取操作日志;
26.从所述操作日志中获取与所述第二缓存数据对应的所述第一关键值。
27.进一步的,所述将所述第一关键值发送至预设的消息队列中的步骤,具体包括:
28.调用预设的处理程序;其中,所述处理程序基于预设的非业务代码创建生成;
29.通过所述处理程序接收所述订阅程序传输的所述第一关键值;
30.基于所述处理程序将所述第一关键值发送至所述消息队列中。
31.进一步的,在所述对基于所述关键词查询得到的所述第二缓存数据进行删除重试处理的步骤之后,还包括:
32.获取对所述第二缓存数据进行删除重试处理后得到的处理结果;
33.判断所述处理结果是否为删除失败;
34.若是,生成与所述第二缓存数据对应的告警信息;
35.获取目标用户的通讯信息;
36.基于所述通讯信息,将所述告警信息发送至所述目标用户的用户终端。
37.进一步的,所述缓存数据的处理方法,还包括:
38.判断是否接收到第二用户触发的将指定数据缓存至所述redis服务器的缓存请求;
39.若是,基于预设的lua脚本设置与所述指定数据对应的第二关键值,以及设置与所述第二关键值对应的过期时间;
40.从所述缓存请求中获取所述指定数据;
41.基于所述第二关键值与所述过期时间,将所述指定数据缓存至所述redis服务器内。
42.为了解决上述技术问题,本技术实施例还提供一种缓存数据的处理装置,采用了如下所述的技术方案:
43.第一判断模块,用于判断是否接收到第一用户触发的与数据库对应的数据更新操作;
44.第一删除模块,用于若是,对redis服务器当前的第一缓存数据进行删除;
45.更新模块,用于基于所述数据更新操作对所述数据库内的原始数据进行更新,得到目标数据;
46.确定模块,用于获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间;
47.第二删除模块,用于在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除。
48.为了解决上述技术问题,本技术实施例还提供一种计算机设备,采用了如下所述的技术方案:
49.判断是否接收到第一用户触发的与数据库对应的数据更新操作;
50.若是,对redis服务器当前的第一缓存数据进行删除;
51.基于所述数据更新操作对所述数据库内的原始数据进行更新,得到目标数据;
52.获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间;
53.在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除。
54.为了解决上述技术问题,本技术实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
55.判断是否接收到第一用户触发的与数据库对应的数据更新操作;
56.若是,对redis服务器当前的第一缓存数据进行删除;
57.基于所述数据更新操作对所述数据库内的原始数据进行更新,得到目标数据;
58.获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间;
59.在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除。
60.与现有技术相比,本技术实施例主要有以下有益效果:
61.本技术实施例当接收到第一用户触发的与数据库对应的数据更新操作时,会先对redis服务器当前的第一缓存数据进行删除,然后基于数据更新操作对数据库内的原始数据进行更新,得到目标数据,后续获取与预设项目对应的读请求的耗时时间,并基于耗时时间确定休眠时间,最后在经过休眠时间后,对redis服务器当前的与目标数据对应的第二缓存数据进行删除。本技术实施例在对数据库内存储的初始数据进行更新操作后,通过基于与预设项目对应的读请求的耗时时间确定休眠时间,进而根据休眠时间来进行对于redis服务器当前的缓存数据的删除处理,以实现将初始数据更新前缓存在redis服务器中的缓存数据进行延时删除,使得数据请求方不会获取到更新前的初始数据,有效地保证了数据库与redis服务器的缓存数据之间的数据一致性。
附图说明
62.为了更清楚地说明本技术中的方案,下面将对本技术实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
63.图1是本技术可以应用于其中的示例性系统架构图;
64.图2根据本技术的缓存数据的处理方法的一个实施例的流程图;
65.图3是根据本技术的缓存数据的处理装置的一个实施例的结构示意图;
66.图4是根据本技术的计算机设备的一个实施例的结构示意图。
具体实施方式
67.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本技术的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
68.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
69.为了使本技术领域的人员更好地理解本技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。
70.如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
71.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
72.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(moving picture expertsgroup audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving pictureexperts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
73.服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
74.需要说明的是,本技术实施例所提供的缓存数据的处理方法一般由服务器/终端设备执行,相应地,缓存数据的处理装置一般设置于服务器/终端设备中。
75.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
76.继续参考图2,示出了根据本技术的缓存数据的处理方法的一个实施例的流程图。所述的缓存数据的处理方法,包括以下步骤:
77.步骤s201,判断是否接收到第一用户触发的与数据库对应的数据更新操作。
78.在本实施例中,缓存数据的处理方法运行于其上的电子设备(例如图1所示的服务器/终端设备),可以通过有线连接方式或者无线连接方式获取数据更新操作。需要指出的是,上述无线连接方式可以包括但不限于3g/4g/5g连接、wifi连接、蓝牙连接、wimax连接、
zigbee连接、uwb(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。其中,上述数据更新操作为第一用户触发的对数据库内的原始数据进行更新的操作,数据更新操作可包括对于数据的增加、删除、替换操作,等等。上述数据库可为mysql数据。
79.步骤s202,若是,对redis服务器当前的第一缓存数据进行删除。
80.在本实施例中,上述redis服务器是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。通过引入redis服务器将一些常用的数据缓存到redis服务器中,从而很好的提高了数据加载效率,从而降低对于数据库的读写次数。其中,对于redis服务器的查询请求的实现逻辑为:先查询redis服务器,如果数据不存在redis服务器内则查询数据库,在数据库查询到的数据写入redis服务器以便以后的数据查询不用直接去查数据库。
81.步骤s203,基于所述数据更新操作对所述数据库内的原始数据进行更新,得到目标数据。
82.在本实施例中,在接收到第一用户触发的与数据库对应的数据更新操作,便会对数据库内与该数据更新操作对应的原始数据进行更新处理,以得到相应的目标数据。
83.步骤s204,获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间。
84.在本实施例中,上述预设项目指与上述数据库以及redis服务器存在数据交互的相关联的项目。上述获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间的具体实施过程,本技术将在后续的具体实施例中对此进行进一步的细节描述,在此不作过多阐述。
85.步骤s205,在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除。通过在数据库内存储的初始数据进行更新操作后,能够确保初始数据更新前缓存在redis服务器中的缓存数据可以删除成功,从而使得数据请求方不会获取到更新前的初始数据,有效地保证了数据库与redis服务器的缓存数据之间的数据一致性。
86.在本实施例中,当到达与上述休眠时间点对应的时间后,则立即对redis服务器当前的与目标数据对应的第二缓存数据进行删除。
87.本技术当接收到第一用户触发的与数据库对应的数据更新操作时,会先对redis服务器当前的第一缓存数据进行删除,然后基于数据更新操作对数据库内的原始数据进行更新,得到目标数据,后续获取与预设项目对应的读请求的耗时时间,并基于耗时时间确定休眠时间,最后在经过休眠时间后,对redis服务器当前的与目标数据对应的第二缓存数据进行删除。本技术在对数据库内存储的初始数据进行更新操作后,通过基于与预设项目对应的读请求的耗时时间确定休眠时间,进而根据休眠时间来进行对于redis服务器当前的缓存数据的删除处理,以实现将初始数据更新前缓存在redis服务器中的缓存数据进行延时删除,使得数据请求方不会获取到更新前的初始数据,有效地保证了数据库与redis服务器的缓存数据之间的数据一致性。
88.在一些可选的实现方式中,步骤s204包括以下步骤:
89.分别获取与所述预设项目对应的在预设时间周期内的所有读请求的第一耗时时间。
90.在本实施例中,对于上述预设时间周期的取值不作具体限定,可根据实际的业务使用需求进行设置,例如可设置为距离当前时间的前一个月内。上述读请求的第一耗时时间是指预设项目所对应的读请求的读数据业务逻辑的耗时。
91.计算所有所述第一耗时时间的平均值,得到第二耗时时间。
92.在本实施例中,可获取所有第一耗时时间的数量,计算所有第一耗时时间的和值,进而计算所有第一耗时时间的和值与所有第一耗时时间的数量之间的商值,以得到上述第二耗时时间。
93.获取预设的耗时数值。
94.在本实施例中,对于上述耗时数值的取值不作具体限定,可根据实际的业务使用需求进行设置,例如可为500ms。
95.计算所述第二耗时时间与所述耗时数值之间的和值。
96.将所述和值作为所述休眠时间。
97.在本实施例中,通过计算第二耗时时间与耗时数值之间的和值并用作休眠时间,以确保在进行与上述数据更新操作对应的写请求的期间所生成的读请求结束后,写请求可以删除读请求造成的缓存脏数据。
98.本技术通过获取与预设项目对应的在预设时间周期内的所有读请求的第一耗时时间,进而基于该第一耗时时间和预设的耗时数值来快速地确定出休眠时间,有利于后续可以在经过该休眠时间后,来对redis服务器当前的与目标数据对应的第二缓存数据进行删除,以实现准确地删除读请求造成的缓存脏数据,进而保证了数据库数据与redis服务器内的缓存数据的一致性。
99.在本实施例的一些可选的实现方式中,在步骤s205之后,上述电子设备还可以执行以下步骤:
100.判断所述第二缓存数据是否删除失败。
101.在本实施例中,可以根据该第二缓存数据的所对应的关键值在redis服务器中进行查询处理;当在redis服务器中查无与该关键值对应的缓存数据时,则判定该第二缓存数据删除成功;而当在redis服务器中查询得到与该关键值对应的缓存数据时,则判定该第二缓存数据删除失败。
102.若删除失败,获取与所述第二缓存数据对应的第一关键值。
103.在本实施例中,当电子设备将数据库中的目标数据缓存到redis服务器内时,会建立数据库数据与缓存数据之间的映射关系,并且基于该映射关系可以从redis服务器中查询得到与数据库数据对应的缓存数据。具体的,可以将数据库数据在数据库中的key值,即关键值),同时作为数据库数据对应的缓存数据在redis服务器的关键值,以基于数据库数据与缓存数据均关联的关键值建立两者之间的映射关系。其中,将第二缓存数据对应的关键值记为第一关键值。
104.将所述第一关键值发送至预设的消息队列中,以在所述消息队列中记录与所述第二缓存数据对应的数据删除任务。
105.在本实施例中,上述消息队列(message queue,mq)是基础数据结构中“先进先出”的一种数据结构。在本实施例中,消息队列是用于记录上述第二缓存数据对应的数据删除任务,即将第一关键值写入消息队列相当于是生成并记录一个待执行的数据删除任务。其
中,电子设备与消息队列之间建立有确认字符机制,当消息队列检测到队列中有新写入的关键值时,则会向电子设备发送确认字符。当电子设备将第一关键值写入消息队列后,可以进一步检测之后的预设时长内是否有接收到消息队列发送的确认字符。当电子设备在预设时长内接收到消息队列发送的确认字符时,则判定已将第一关键值成功写入消息队列中;而当电子设备在预设时长内未接收到消息队列发送的确认字符时,则需重新将第一关键值写入消息队列中。另外,对于上述预设时长的取值不作具体限定,可以根据实际使用需求进行设置,例如可设置为2秒。通过以上操作可以确保将第一关键值成功写入消息队列中。
106.从所述消息队列中获取所述第一关键值。
107.在本实施例中,消息队列可以按照预设的发送规则向电子设备发送其内部写入的第一关键值。其中,上述的预设规则可以是接收到电子设备发送的第一关键值获取指令,或者可以是每经过一个预设间隔时长则向电子设备发送第一关键值。
108.对基于所述第一关键值查询得到的所述第二缓存数据进行删除重试处理。
109.在本实施例中,当电子设备获取到消息队列内的第一关键值时,则判定当前需要执行与该第一关键值对应的数据删除任务,具体会从redis服务器中查询出与该第一关键值匹配的目标关键值,并基于该目标关键值查询得到相应的目标缓存数据,也即第一关键值对应的第二缓存数据。并在查询到该第二缓存数据后,将第二缓存数据从redis服务器中删除。
110.本技术在经过休眠时间后,对redis服务器当前的与所述目标数据对应的第二缓存数据进行删除后,如果检测出第二缓存数据删除失败,则会智能地建立对redis服务器中删除失败的缓存数据的删除重试机制,在数据库内存储的初始数据进行更新操作后,能够确保初始数据更新前缓存在redis服务器中的缓存数据可以删除成功,从而使得数据请求方不会获取到更新前的初始数据,有效地保证了数据库与redis服务器的缓存数据之间的数据一致性。
111.在一些可选的实现方式中,所述获取与所述第二缓存数据对应的第一关键值的步骤,包括以下步骤:
112.启动预设的订阅程序。
113.在本实施例中,上述订阅程序为用于订阅数据库内的日志文件的程序,上述订阅程序具体可采用消费组件canal。
114.基于所述订阅程序获取所述数据库的日志文件。
115.在本实施例中,在数据库完成数据更新时,数据库会将数据更新对应的操作信息写入日志文件内,
116.从所述日志文件中获取操作日志。
117.在本实施例中,看通过订阅程序从日志文件中获取操作日志。上述日志文件至少包括上述操作日志,操作日志内包含数据库的数据更新所对应的操作信息,该操作信息内包括与第二缓存数据对应的所述第一关键值。
118.从所述操作日志中获取与所述第二缓存数据对应的所述第一关键值。
119.在本实施例中,在获取到操作日志后,可基于订阅程序通过对操作日志进行解析处理,可以从该操作日志中提取出所需的与第二缓存数据对应的所述第一关键值。
120.本技术通过启动预设的订阅程序来获取数据库的日志文件,进而可以从操作日志
内包含的操作日志中实现快速获取与所述第二缓存数据对应的第一关键值,有利于后续能够基于得到的该第一关键值来顺利准确地对基于第一关键值查询得到第二缓存数据进行删除重试处理。
121.在一些可选的实现方式中,所述将所述第一关键值发送至预设的消息队列中的步骤,包括以下步骤:
122.调用预设的处理程序;其中,所述处理程序基于预设的非业务代码创建生成。
123.在本实施例中,上述非业务代码为基于获取上述订阅程序传输的信息的需求编写生成的代码。上述非业务代码为不会对与预设项目对应的业务线代码造成侵入的代码。
124.通过所述处理程序接收所述订阅程序传输的所述第一关键值。
125.在本实施例中,通过处理程序可以从订阅程序中获取上述第一关键值。
126.基于所述处理程序将所述第一关键值发送至所述消息队列中。
127.本技术通过调用基于预设的非业务代码创建生成的处理程序接收订阅程序传输的第一关键值,并将第一关键值发送至所述消息队列中,实现了对于删除失败的第二缓存数据的删除重试处理不会对业务线代码造成大量的侵入,提高了对于第二缓存数据的删除重试处理的处理智能性。
128.在本实施例的一些可选的实现方式中,在所述对基于所述关键词查询得到的所述第二缓存数据进行删除重试处理的步骤之后,上述电子设备还可以执行以下步骤:
129.获取对所述第二缓存数据进行删除重试处理后得到的处理结果。
130.在本实施例中,上述处理结果可包括删除成功与删除失败。
131.判断所述处理结果是否为删除失败。
132.若是,生成与所述第二缓存数据对应的告警信息。
133.在本实施例中,上述告警信息可为包括电子设备的缓存服务宕机的内容信息。
134.获取目标用户的通讯信息。
135.在本实施例中,上述目标用户可指与数据库运维相关的工程师。上述通讯信息可包括目标用户的邮件地址或手机号码。
136.基于所述通讯信息,将所述告警信息发送至所述目标用户的用户终端。
137.在本实施例中,通过将告警信息发送至所述目标用户的用户终端,以提示目标用户基于该告警信息及时进行排障和修复缓存服务。
138.本技术通过基于获取的对第二缓存数据进行删除重试处理后得到的处理结果来实现对缓存服务是否宕机的有效判断,并会在判定出缓存服务出现异常时会智能地生成相应的告警信息,并会通过报警信息来提示相关用户进行对于缓存服务的及时修复,以使需要删除的缓存数据可以成功删除,有利于保证数据库与redis服务器的缓存数据之间的数据一致性。
139.在本实施例的一些可选的实现方式中,所述缓存数据的处理方法,还包括:
140.判断是否接收到第二用户触发的将指定数据缓存至所述redis服务器的缓存请求。
141.在本实施例中,上述缓存请求中携带有上述指定数据。
142.若是,基于预设的lua脚本设置与所述指定数据对应的第二关键值,以及设置与所述第二关键值对应的过期时间。
143.在本实施例中,当接收到第二用户触发的将指定数据缓存至redis服务器的缓存请求时,电子设备会调用采用lua脚本语言编写的api接口请求设置与上述指定数据对应的第二关键值,以及设置与上述第二关键值对应的过期时间。其中,上述lua脚本是一个小巧的脚本语言,lua脚本可以很容易的被c/c++代码调用,也可以反过来调用c/c++的函数,使得lua脚本在应用程序中可以被广泛应用。lua脚本不仅仅作为扩展脚本,也可以作为普通的配置文件,代替xml,ini等文件格式,并且更容易理解和维护,而且lua脚本由标准c编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。通常一个完整的lua解释器不过200k,并且在所有脚本引擎中,lua的速度是最快的。在现有技术中在redis服务器中设置上述第二关键值时,通常采用jedis先设置上述第二关键值对应的键值,然后再在上述redis服务器中设置上述第二关键值的过期时间,该过程相当于两个步骤,无法保证命令的原子性。redis服务器在执行lua脚本时不会执行其他脚本或redis命令,语义类似于multi(开启事务)/exec(触发事务,一并执行事务中的所有命令),从所有其他客户端的角度来看,脚本的效果要么仍然不可见,要么已经完成。这个机制和关系型数据库事物的机制很像。lua脚本运行原理是,客户端可以向服务器发送lua脚本来执行自定义动作,获取脚本的响应数据。redis服务器会单线程原子性执行lua脚本,保证lua脚本在处理的过程中不会被任意其它请求打断。redis原生没有提供原子性命令,比如新增key和删除key一起执行,这样功能的指令只能用lua脚本执行。而本实施例通过采用上述lua脚本的方式可直接提交在上述redis服务器中设置与上述指定数据对应的第二关键值,以及设置与上述第二关键值对应的过期时间,两个步骤同时进行,进而保证了命令的原子性,减少了网络传输,进而提高了处理效率。
144.从上述缓存请求中获取上述指定数据。
145.在本实施例中,通过对缓存请求进行解析处理,可以从缓存请求中获取到上述指定数据。
146.基于所述第二关键值与所述过期时间,将所述指定数据缓存至所述redis服务器内。
147.在本实施例中,当所述第二关键值在上述redis服务器中设置成功后,表示为对该redis服务器加锁成功,后续便可执行将上述指定数据缓存到redis服务器中。
148.本技术在接收到第二用户触发的将指定数据缓存至redis服务器的缓存请求时,会智能地采用lua脚本的方式可直接提交在上述redis服务器中设置与上述指定数据对应的第二关键值,以及设置与上述第二关键值对应的过期时间,由于两个步骤同时进行,可以有效保证了命令的原子性,减少了网络传输,进而提高了处理效率。
149.需要强调的是,为进一步保证上述第二缓存数据的私密和安全性,上述第二缓存数据还可以存储于一区块链的节点中。
150.本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
151.本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工
智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
152.人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
153.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)等非易失性存储介质,或随机存储记忆体(random access memory,ram)等。
154.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
155.进一步参考图3,作为对上述图2所示方法的实现,本技术提供了一种缓存数据的处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
156.如图3所示,本实施例所述的缓存数据的处理装置300包括:第一判断模块301、第一删除模块302、更新模块303、确定模块304以及第二删除模块305。其中:
157.第一判断模块301,用于判断是否接收到第一用户触发的与数据库对应的数据更新操作;
158.第一删除模块302,用于若是,对redis服务器当前的第一缓存数据进行删除;
159.更新模块303,用于基于所述数据更新操作对所述数据库内的原始数据进行更新,得到目标数据;
160.确定模块304,用于获取与预设项目对应的读请求的耗时时间,并基于所述耗时时间确定休眠时间;
161.第二删除模块305,用于在经过所述休眠时间后,对所述redis服务器当前的与所述目标数据对应的第二缓存数据进行删除。
162.在本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
163.在本实施例的一些可选的实现方式中,确定模块304包括:
164.第一获取子模块,用于分别获取与所述预设项目对应的在预设时间周期内的所有读请求的第一耗时时间;
165.第一计算子模块,用于计算所有所述第一耗时时间的平均值,得到第二耗时时间;
166.第二获取子模块,用于获取预设的耗时数值;
167.第二计算子模块,用于计算所述第二耗时时间与所述耗时数值之间的和值;
168.确定子模块,用于将所述和值作为所述休眠时间。
169.在本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
170.在本实施例的一些可选的实现方式中,缓存数据的处理装置还包括:
171.第二判断模块,用于判断所述第二缓存数据是否删除失败;
172.第一获取模块,用于若删除失败,获取与所述第二缓存数据对应的第一关键值;
173.第一发送模块,用于将所述第一关键值发送至预设的消息队列中,以在所述消息队列中记录与所述第二缓存数据对应的数据删除任务;
174.第二获取模块,用于从所述消息队列中获取所述第一关键值;
175.处理模块,用于对基于所述第一关键值查询得到的所述第二缓存数据进行删除重试处理。
176.本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
177.在本实施例的一些可选的实现方式中,第一获取模块包括:
178.启动子模块,用于启动预设的订阅程序;
179.第三获取子模块,用于基于所述订阅程序获取所述数据库的日志文件;
180.第四获取子模块,用于从所述日志文件中获取操作日志;
181.第五获取子模块,用于从所述操作日志中获取与所述第二缓存数据对应的所述第一关键值。
182.在本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
183.在本实施例的一些可选的实现方式中,第一发送模块包括:
184.调用子模块,用于调用预设的处理程序;其中,所述处理程序基于预设的非业务代码创建生成;
185.接收子模块,用于通过所述处理程序接收所述订阅程序传输的所述第一关键值;
186.发送子模块,用于基于所述处理程序将所述第一关键值发送至所述消息队列中。
187.在本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
188.在本实施例的一些可选的实现方式中,缓存数据的处理装置还包括:
189.第三获取模块,用于获取对所述第二缓存数据进行删除重试处理后得到的处理结果;
190.第三判断模块,用于判断所述处理结果是否为删除失败;
191.生成模块,用于若是,生成与所述第二缓存数据对应的告警信息;
192.第四获取模块,用于获取目标用户的通讯信息;
193.第二发送模块,用于基于所述通讯信息,将所述告警信息发送至所述目标用户的用户终端。
194.在本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
195.在本实施例的一些可选的实现方式中,缓存数据的处理装置还包括:
196.第四判断模块,用于判断是否接收到第二用户触发的将指定数据缓存至所述redis服务器的缓存请求;
197.设置模块,用于若是,基于预设的lua脚本设置与所述指定数据对应的第二关键值,以及设置与所述第二关键值对应的过期时间;
198.第五获取模块,用于从所述缓存请求中获取所述指定数据;
199.缓存模块,用于基于所述第二关键值与所述过期时间,将所述指定数据缓存至所述redis服务器内。
200.在本实施例中,上述模块或单元分别用于执行的操作与前述实施方式的缓存数据的处理方法的步骤一一对应,在此不再赘述。
201.为解决上述技术问题,本技术实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
202.所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。
203.所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
204.所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如缓存数据的处理方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
205.所述处理器42在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述缓存数据的处理方法的计算机可读指令。
206.所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
207.与现有技术相比,本技术实施例主要有以下有益效果:
208.本技术实施例中,当接收到第一用户触发的与数据库对应的数据更新操作时,会先对redis服务器当前的第一缓存数据进行删除,然后基于数据更新操作对数据库内的原始数据进行更新,得到目标数据,后续获取与预设项目对应的读请求的耗时时间,并基于耗时时间确定休眠时间,最后在经过休眠时间后,对redis服务器当前的与目标数据对应的第二缓存数据进行删除。本技术实施例在对数据库内存储的初始数据进行更新操作后,通过基于与预设项目对应的读请求的耗时时间确定休眠时间,进而根据休眠时间来进行对于redis服务器当前的缓存数据的删除处理,以实现将初始数据更新前缓存在redis服务器中的缓存数据进行延时删除,使得数据请求方不会获取到更新前的初始数据,有效地保证了数据库与redis服务器的缓存数据之间的数据一致性。。
209.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的缓存数据的处理方法的步骤。
210.与现有技术相比,本技术实施例主要有以下有益效果:
211.本技术实施例中,当接收到第一用户触发的与数据库对应的数据更新操作时,会先对redis服务器当前的第一缓存数据进行删除,然后基于数据更新操作对数据库内的原始数据进行更新,得到目标数据,后续获取与预设项目对应的读请求的耗时时间,并基于耗时时间确定休眠时间,最后在经过休眠时间后,对redis服务器当前的与目标数据对应的第二缓存数据进行删除。本技术实施例在对数据库内存储的初始数据进行更新操作后,通过基于与预设项目对应的读请求的耗时时间确定休眠时间,进而根据休眠时间来进行对于redis服务器当前的缓存数据的删除处理,以实现将初始数据更新前缓存在redis服务器中的缓存数据进行延时删除,使得数据请求方不会获取到更新前的初始数据,有效地保证了数据库与redis服务器的缓存数据之间的数据一致性。
212.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
213.显然,以上所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例,附图中给出了本技术的较佳实施例,但并不限制本技术的专利范围。本技术可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本技术的公开内容的理解更加透彻全面。尽管参照前述实施例对本技术进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本技术说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本技术专利保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1