CN115048392A - 数据的删除方法和装置、存储介质及电子装置 - Google Patents
数据的删除方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN115048392A CN115048392A CN202210570091.7A CN202210570091A CN115048392A CN 115048392 A CN115048392 A CN 115048392A CN 202210570091 A CN202210570091 A CN 202210570091A CN 115048392 A CN115048392 A CN 115048392A
- Authority
- CN
- China
- Prior art keywords
- target
- message
- deleting
- data
- middleware
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012217 deletion Methods 0.000 title claims description 45
- 230000037430 deletion Effects 0.000 title claims description 44
- 230000008859 change Effects 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 238000004887 air purification Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 235000019504 cigarettes Nutrition 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据的删除方法和装置、存储介质及电子装置,涉及智能家居技术领域,该数据的删除方法包括:在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,目标删除操作用于删除目标缓存中存储的目标数据;在开始执行目标删除操作之后,基于目标操作请求对数据库中包括的目标数据进行更新,得到更新数据;在确定从第一中间件中监听到第一目标消息的情况下,再次执行目标删除操作,第一目标消息是在确定数据库中包括的目标数据完成更新之后所生成的并存储至第一中间件中的消息。可解决相关技术中存在的缓存和数据库的一致性难以保证的问题,达到了提高缓存和数据库的一致性的效果。
Description
技术领域
本申请涉及智能家居技术领域,具体而言,涉及一种数据的删除方法和装置、存储介质及电子装置。
背景技术
在高并发的业务场景下,往往使用高性能缓存来减轻数据库的压力,例如redis缓存,对应高并发环境中缓存和数据库的一致性问题,相关技术中采取的方案是先删除redis缓存,然后将数据更新到数据库中,这样就会在多线程环境下,出现缓存的脏数据问题,导致缓存和数据库的不一致。即相关技术中存在缓存和数据库的一致性难以保证的问题。
针对相关技术中存在的缓存和数据库的一致性难以保证的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据的删除方法和装置、存储介质及电子装置,以至少解决相关技术中存在的缓存和数据库的一致性难以保证的问题。
根据本申请实施例的一个实施例,提供了一种数据的删除方法,包括:在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,所述目标删除操作用于删除目标缓存中存储的所述目标数据;在开始执行所述目标删除操作之后,基于所述目标操作请求对所述数据库中包括的所述目标数据进行更新,得到更新数据;在确定从第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,其中,所述第一目标消息是在确定所述数据库中包括的所述目标数据完成所述更新之后所生成的并存储至所述第一中间件中的消息。
在一个示例性实施例中,在确定从所述第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,包括:通过目标监听服务对所述第一中间件执行监听;在确定从所述第一中间件中监听到所述第一目标消息的情况下,再次执行所述目标删除操作。
在一个示例性实施例中,在确定从所述第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,包括:通过所述目标监听服务对所述第一目标消息进行解析,以获取所述目标数据的主键key;基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。
在一个示例性实施例中,所述方法还包括:从所述第一中间件中获取第二目标消息,其中,所述第二目标消息是由目标日志服务基于第一日志所生成的并发送至所述第一中间件中的消息,所述第二目标消息中包括所述目标数据的信息,所述第一日志用于指示所述数据库发生变更时所生成的日志;基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作。
在一个示例性实施例中,基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作,包括:对所述第二目标消息进行解析,以获取所述目标数据的主键key;基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。
在一个示例性实施例中,基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作包括:基于所述第二目标消息中所包括的所述目标数据的主键key,确定所述目标缓存中包括的与所述目标数据的主键key对应的第一数据;删除所述第一数据。
在一个示例性实施例中,从所述第一中间件中获取第二目标消息,包括:通过所述目标日志服务接收所述第一日志,其中,所述第一日志是由第二中间件通过订阅所述数据库的binlog日志文件所获得的并投递给所述目标日志服务的日志;通过所述目标日志服务对所述第一日志进行解析,以获取所述第一日志中所包括的所述目标数据的主键key,并基于所述目标数据的主键key生成第二目标消息;通过所述目标日志服务将所述第二目标消息发送给所述第一中间件;从所述第一中间件中获取所述第二目标消息。
根据本申请实施例的另一个实施例,还提供了一种数据的删除装置,包括:第一删除模块,用于在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,所述目标删除操作用于删除目标缓存中存储的所述目标数据;更新模块,用于在开始执行所述目标删除操作之后,基于所述目标操作请求对所述数据库中包括的所述目标数据进行更新,得到更新数据;第二删除模块,用于在确定从第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,其中,所述第一目标消息是在确定所述数据库中包括的所述目标数据完成所述更新之后所生成的并存储至所述第一中间件中的消息。
根据本申请实施例的又一个实施例,还提供了一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述任一项方法实施例中的步骤。
根据本申请实施例的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行上述任一项方法实施例中的步骤。
通过本发明,在检测到用于请求变更数据库中的目标数据的目标操作请求的情况下,先对目标缓存中存储的目标数据执行删除操作,再基于目标操作请求对数据库中的目标数据进行更新,以得到更新数据,然后在确定从第一中间件中监听到第一目标消息的情况下,再次对目标缓存中的目标数据执行删除操作。即通过监听第一中间件中的消息以实现对目标缓存进行异步双删除操作,可实现提高缓存和数据库的一致性的目的,避免了相关技术中在多线程环境下缓存中可能出现脏数据,即导致缓存和数据库不一致的问题。通过本发明,解决了相关技术中存在的缓存和数据库的一致性难以保证的问题,达到了提高缓存和数据库的一致性的效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例的一种智能家居设备的交互方法的硬件环境示意图;
图2是根据本申请实施例的一种数据的删除方法的流程图;
图3是根据本申请实施例的一种异步双删机制的逻辑流程图;
图4是根据本申请实施例的一种缓存数据处理方法的流程图;
图5是根据本申请实施例的一种数据的删除装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种智能家居设备的交互方法。该智能家居设备的交互方法广泛应用于智慧家庭(Smart Home)、智能家居、智能家用设备生态、智慧住宅(Intelligence House)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述智能家居设备的交互方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备102可以并不限定于为PC、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
在本实施例中提供了一种数据的删除方法,图2是根据本申请实施例的一种数据的删除方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,所述目标删除操作用于删除目标缓存中存储的所述目标数据;
步骤S204,在开始执行所述目标删除操作之后,基于所述目标操作请求对所述数据库中包括的所述目标数据进行更新,得到更新数据;
步骤S206,在确定从第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,其中,所述第一目标消息是在确定所述数据库中包括的所述目标数据完成所述更新之后所生成的并存储至所述第一中间件中的消息。
通过上述步骤,在检测到用于请求变更数据库中的目标数据的目标操作请求的情况下,先对目标缓存中存储的目标数据执行删除操作,再基于目标操作请求对数据库中的目标数据进行更新,以得到更新数据,然后在确定从第一中间件中监听到第一目标消息的情况下,再次对目标缓存中的目标数据执行删除操作。即通过监听第一中间件中的消息以实现对目标缓存进行异步双删除操作,可实现提高缓存和数据库的一致性的目的,避免了相关技术中在多线程环境下缓存中可能出现脏数据,即导致缓存和数据库不一致的问题。通过本发明,解决了相关技术中存在的缓存和数据库的一致性难以保证的问题,达到了提高缓存和数据库的一致性的效果。
其中,上述步骤的执行主体可以为后台,或服务器,或者为配置在存储设备上的具备人机交互能力的处理器,或者为具备类似处理能力的处理设备或处理单元等,但不限于此。下面以后台执行上述操作为例(仅是一种示例性说明,在实际操作中还可以是其他的设备或模块来执行上述操作)进行说明。
在上述实施例中,后台在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,例如,当客户端发起目标操作请求,后台对目标操作请求进行解析,例如,上述目标操作请求为图书馆中借阅图书的操作,或线上购物的操作等,目标操作请求用于请求变更数据库中所存储的目标数据,当解析出目标操作请求是请求变更数据库中存储的目标数据的情况下,对目标缓存中的目标数据执行目标删除操作,即删除目标缓存中存储的目标数据,在实际应用中,可根据目标操作请求中请求变更的目标数据的标识将目标缓存中与该标识对应的目标数据删除,目标数据的标识可以是目标数据的主键key,上述目标缓存中存储的目标数据为在预定条件下从数据库中调取目标数据并缓存至目标缓存中的,例如,用户在线上购物过程中对某商品进行查询,或用户在图书馆查询某书籍的库存等,通常开始查询时,目标缓存中可能没有该商品或书籍的缓存记录,因此当用户发起查询请求时,需要从数据库中调取相应的商品或书籍的目标数据;在开始执行上述目标删除操作之后,再基于目标操作请求对数据库中包括的目标数据进行更新,以得到更新数据,即,当解析出客户端发起用于请求变更数据库中的目标数据的操作请求时,先删除缓存中的目标数据,再更新数据库中的目标数据;然后,在确定从第一中间件中监听到第一目标消息的情况下,再次执行目标删除操作,例如,上述第一中间件可以是rocketMq消息中间件,或称为消息队列,第一目标消息是当数据库中包括的目标数据完成更新之后所生成的并存储至第一中间件中的消息,在实际应用中,后台应用程序在确定数据库中的目标数据完成更新后将生成第一目标消息,同时将该消息写入消息队列中,如rocketMq消息中间件中,后台的消息监听服务将对消息队列进行监听,当监听到第一目标消息时,对目标缓存再次执行目标删除操作,即通过监听第一中间件中的消息以完成对目标缓存的第二次删除操作。避免了相关技术中采取的方案是先删除缓存然后将数据更新到数据库中,容易导致缓存和数据库不一致的问题,本方案可实现提高缓存和数据库的一致性的目的。通过本发明,解决了相关技术中存在的缓存和数据库的一致性难以保证的问题,达到了提高缓存和数据库的一致性的效果。
在一个可选的实施例中,在确定从所述第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,包括:通过目标监听服务对所述第一中间件执行监听;在确定从所述第一中间件中监听到所述第一目标消息的情况下,再次执行所述目标删除操作。在本实施例中,后台通过目标监听服务对第一中间件执行监听,例如,第一中间件为rocketMq消息中间件,或称为消息队列,目标监听服务(或目标监听程序)对rocketMq主题消息进行订阅,获取消息队列中的消息,当监听到第一目标消息,并解析第一目标消息,解析出第一目标消息中包括的目标数据的标识,如目标数据的主键key,然后,对目标缓存中包括的与主键key对应的目标数据再次执行目标删除操作。通过本实施例,实现了通过消息中间件对目标缓存进行异步双删除操作的目的。
在一个可选的实施例中,在确定从所述第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,包括:通过所述目标监听服务对所述第一目标消息进行解析,以获取所述目标数据的主键key;基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。在本实施例中,通过对第一目标消息进行解析,以获得目标数据的主键key,然后基于目标数据的主键key对目标缓存中包括的与主键key对应的目标数据再次执行目标删除操作,通过本实施例,通过对第一目标消息进行解析以获得目标数据的主键key并对目标缓存中的目标数据执行目标删除操作的目的。
在一个可选的实施例中,所述方法还包括:从所述第一中间件中获取第二目标消息,其中,所述第二目标消息是由目标日志服务基于第一日志所生成的并发送至所述第一中间件中的消息,所述第二目标消息中包括所述目标数据的信息,所述第一日志用于指示所述数据库发生变更时所生成的日志;基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作。在本实施例中,通过从第一中间件中获取第二目标消息,第二目标消息是由后台的目标日志服务(或目标日志程序)基于第一日志所生成的并发送给第一中间件的消息,其中,第一日志是数据库发生变更时所生成的日志,后台的应用服务(或应用程序)从第一中间件中获取第二目标消息,然后解析第二目标消息中包括的目标数据的信息,例如解析目标数据及目标数据的主键key,并基于主键key对目标缓存中包括的与主键key对应的目标数据再次执行目标删除操作,例如,在实际应用中,当前述对目标缓存的删除操作可能失败的情况下,通过目标日志服务基于数据库变更的日志所生成的消息并将消息发送到第一中间件中,然后获取消息并再次对目标缓存执行删除操作,可进一步保证缓存和数据库的一致性。
在一个可选的实施例中,基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作,包括:对所述第二目标消息进行解析,以获取所述目标数据的主键key;基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。在本实施例中,通过对第二目标消息进行解析,以获得目标数据的主键key,然后基于目标数据的主键key对目标缓存中包括的与主键key对应的目标数据再次执行目标删除操作,通过本实施例,通过对第二目标消息进行解析以获得目标数据的主键key并对目标缓存中的目标数据执行目标删除操作的目的。
在一个可选的实施例中,基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作包括:基于所述第二目标消息中所包括的所述目标数据的主键key,确定所述目标缓存中包括的与所述目标数据的主键key对应的第一数据;删除所述第一数据。在本实施例中,可基于从第二目标消息中解析出的目标数据的主键key,确定出目标缓存中包括的与目标数据的主键key对应的第一数据,在实际应用中,目标缓存中可能还保存了其他的数据,所以先确定出与目标数据的主键key对应的第一数据,然后再删除第一数据,实现了对目标缓存中的目标数据执行删除操作的目的。
在一个可选的实施例中,从所述第一中间件中获取第二目标消息,包括:通过所述目标日志服务接收所述第一日志,其中,所述第一日志是由第二中间件通过订阅所述数据库的binlog日志文件所获得的并投递给所述目标日志服务的日志;通过所述目标日志服务对所述第一日志进行解析,以获取所述第一日志中所包括的所述目标数据的主键key,并基于所述目标数据的主键key生成第二目标消息;通过所述目标日志服务将所述第二目标消息发送给所述第一中间件;从所述第一中间件中获取所述第二目标消息。在实际应用中,可由第二中间件通过订阅目标数据库的binlog日志文件以获取到数据库中数据变更的日志,如上述第一日志,并将第一日志投递到目标日志服务(或目标日志程序),例如,第二中间件为canal中间件,canal中间件会订阅数据库的binlog日志文件,以获取到数据库中数据变更的日志,再通过后台的目标日志服务对第一日志进行解析,以获取第一日志中所包括的目标数据的主键key,以及基于目标数据的主键key生成第二目标消息,然后将第二目标消息发送到第一中间件中,如第一中间件为rocketMq消息中间件,或称为消息队列,后台的应用程序从第一中间件中获取消息,如上述第二目标消息,进而基于第二目标消息解析出目标数据的主键key并对目标缓存执行目标删除操作。通过本实施例,通过第二中间件订阅数据库的变更日志,确保缓存的再次重试删除,以实现缓存和数据库的一致性的目的。
为了更好的理解上述数据处理方法的过程,以下再结合可选实施例对上述数据处理方法的流程进行说明,但不用于限定本申请实施例的技术方案。
在本实施例中提供了一种缓存数据的异步双删的方法,图3是根据本申请实施例的一种异步双删机制的逻辑流程图,如图3所示,具体如下:
S302,业务程序(或称为应用程序)先删除redis缓存(对应于前述目标缓存),也可以是其它缓存,对此不作限定;
S304,业务程序再更新数据库数据(对应于前述目标数据);
S306,将数据写入rocketMq消息队列(对应于前述第一中间件),即数据库中数据发生变更后将生成消息,消息中包括发生变更的数据的信息,并将消息写入消息队列;
S308,监听程序对rocketMq主题消息进行订阅,获取队列消息(对应于前述第一目标消息);
S310,解析投递的队列消息,并将对应的数据缓存再次删除,例如,解析队列消息中包括的数据的主键key,并将缓存中与该主键key对应的数据再次删除。
上述实施例中由后台的应用程序在对客户端发起的操作请求进行解析,当解析出操作请求是请求对数据库中的数据请求变更时,对缓存执行第一次删除操作,然后由后台的消息监听程序对消息队列进行监听,监听到消息后对消息进行解析,以得到数据的主键key,并将缓存中与主键key对应的数据再次删除,即对缓存执行第二次删除操作。通过使用第一中间件实现缓存的异步双删操作,有效保证了缓存和数据库的一致性。
在本实施例中还提供了一种缓存数据处理方法,图4是根据本申请实施例的一种缓存数据处理方法的流程图,如图4所示,具体如下:
S402,客户端发起操作请求(对应于前述目标操作请求);
S404,应用程序解析请求,当发生数据(对应于前述目标数据)变更的时候,利用异步双删机制删除redis缓存(对应于前述目标缓存)数据;
S406,将需要变更的数据同步到数据库,即更新数据库;
S408,数据库的写入,更新,删除操作会产生binlog日志,中间件canal(对应于前述第二中间件)会订阅数据库的binlog日志文件,获取到数据变更的日志(对应于前述第一日志);
S410,将binlog日志投递给日志解析程序;
S412,日志程序(对应于前述目标日志服务)解析提取数据信息和数据的key,然后发送到rocketMq消息队列(对应于前述第一中间件);
S414,应用程序从消息队列中获取消息;
S416,解析数据及数据key,再次去删除redis缓存,即对缓存重试删除操作,保证缓存和数据库中数据的一致性。
需要说明的是,上述步骤S406中更新数据库操作在步骤S404的双删操作中执行,上述步骤S404相当于包括了前述实施例中的步骤S302~步骤S310,上述实施例中由后台的应用程序在对客户端发起的操作请求进行解析,当解析出操作请求是请求对数据库中的数据请求变更时,对缓存执行异步双删除操作,再通过中间件canal订阅的数据库变更的日志并将binlog日志投递给日志解析程序,以解析出数据信息和数据的主键key,然后发送到消息队列,当后台的应用程序从消息队列中获取到消息后,解析出数据的主键key,再将缓存中与主键key对应的数据再次删除,即对缓存执行第三次删除操作。通过本实施例,可当前述缓存的异步双删除操作可能失败的情况下,通过canal中间件订阅数据库变更日志,确保缓存的再次重试删除,以达到进一步提高缓存和数据库的一致性的效果。
通过上述实施例,在分布式高并发的业务场景中,数据库大多数情况都是用户并发访问最薄弱的环节,缓存可以很大缓解数据库压力,但是随之带来的就是数据库和缓存的数据一致性问题,本申请实施例使用中间件,利用缓存异步双删机制,并在缓存删除失败的时候,通过重试机制确保了缓存的最终删除,实现了缓存和数据库的一致性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
在本实施例中还提供了一种数据的删除装置,图5是根据本申请实施例的一种数据的删除装置的结构框图,如图5所示,包括:
第一删除模块502,用于在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,所述目标删除操作用于删除目标缓存中存储的所述目标数据;
更新模块504,用于在开始执行所述目标删除操作之后,基于所述目标操作请求对所述数据库中包括的所述目标数据进行更新,得到更新数据;
第二删除模块506,用于在确定从第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,其中,所述第一目标消息是在确定所述数据库中包括的所述目标数据完成所述更新之后所生成的并存储至所述第一中间件中的消息。
在一个可选的实施例中,上述第二删除模块506包括:监听单元,用于通过目标监听服务对所述第一中间件执行监听;第一删除单元,用于在确定从所述第一中间件中监听到所述第一目标消息的情况下,再次执行所述目标删除操作。
在一个可选的实施例中,上述第二删除模块506还包括:第一处理单元,用于通过所述目标监听服务对所述第一目标消息进行解析,以获取所述目标数据的主键key;第二删除单元,用于基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。
在一个可选的实施例中,上述装置还包括:获取模块,用于从所述第一中间件中获取第二目标消息,其中,所述第二目标消息是由目标日志服务基于第一日志所生成的并发送至所述第一中间件中的消息,所述第二目标消息中包括所述目标数据的信息,所述第一日志用于指示所述数据库发生变更时所生成的日志;第三删除模块,用于基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作。
在一个可选的实施例中,上述第三删除模块包括:第二处理单元,用于对所述第二目标消息进行解析,以获取所述目标数据的主键key;第三删除单元,用于基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。
在一个可选的实施例中,上述第三删除模块包括:确定单元,用于基于所述第二目标消息中所包括的所述目标数据的主键key,确定所述目标缓存中包括的与所述目标数据的主键key对应的第一数据;第四删除单元,用于删除所述第一数据。
在一个可选的实施例中,上述获取模块包括:接收单元,用于通过所述目标日志服务接收所述第一日志,其中,所述第一日志是由第二中间件通过订阅所述数据库的binlog日志文件所获得的并投递给所述目标日志服务的日志;第三处理单元,用于通过所述目标日志服务对所述第一日志进行解析,以获取所述第一日志中所包括的所述目标数据的主键key,并基于所述目标数据的主键key生成第二目标消息;发送单元,用于通过所述目标日志服务将所述第二目标消息发送给所述第一中间件;获取单元,用于从所述第一中间件中获取所述第二目标消息。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读的存储介质,该计算机可读的存储介质包括存储的程序,其中,该程序运行时执行上述任一项的方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读的存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据的删除方法,其特征在于,包括:
在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,所述目标删除操作用于删除目标缓存中存储的所述目标数据;
在开始执行所述目标删除操作之后,基于所述目标操作请求对所述数据库中包括的所述目标数据进行更新,得到更新数据;
在确定从第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,其中,所述第一目标消息是在确定所述数据库中包括的所述目标数据完成所述更新之后所生成的并存储至所述第一中间件中的消息。
2.根据权利要求1所述的数据的删除方法,其特征在于,在确定从所述第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,包括:
通过目标监听服务对所述第一中间件执行监听;
在确定从所述第一中间件中监听到所述第一目标消息的情况下,再次执行所述目标删除操作。
3.根据权利要求2所述的数据的删除方法,其特征在于,在确定从所述第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,包括:
通过所述目标监听服务对所述第一目标消息进行解析,以获取所述目标数据的主键key;
基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。
4.根据权利要求1所述的数据的删除方法,其特征在于,所述方法还包括:
从所述第一中间件中获取第二目标消息,其中,所述第二目标消息是由目标日志服务基于第一日志所生成的并发送至所述第一中间件中的消息,所述第二目标消息中包括所述目标数据的信息,所述第一日志用于指示所述数据库发生变更时所生成的日志;
基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作。
5.根据权利要求4所述的数据的删除方法,其特征在于,基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作,包括:
对所述第二目标消息进行解析,以获取所述目标数据的主键key;
基于所述目标数据的主键key对所述目标缓存再次执行所述目标删除操作。
6.根据权利要求5所述的数据的删除方法,其特征在于,基于所述第二目标消息中所包括的所述目标数据的信息,再次执行所述目标删除操作包括:
基于所述第二目标消息中所包括的所述目标数据的主键key,确定所述目标缓存中包括的与所述目标数据的主键key对应的第一数据;
删除所述第一数据。
7.根据权利要求4所述的数据的删除方法,其特征在于,从所述第一中间件中获取第二目标消息,包括:
通过所述目标日志服务接收所述第一日志,其中,所述第一日志是由第二中间件通过订阅所述数据库的binlog日志文件所获得的并投递给所述目标日志服务的日志;
通过所述目标日志服务对所述第一日志进行解析,以获取所述第一日志中所包括的所述目标数据的主键key,并基于所述目标数据的主键key生成第二目标消息;
通过所述目标日志服务将所述第二目标消息发送给所述第一中间件;
从所述第一中间件中获取所述第二目标消息。
8.一种数据的删除装置,其特征在于,包括:
第一删除模块,用于在检测到用于请求变更数据库中存储的目标数据的目标操作请求的情况下,执行目标删除操作,其中,所述目标删除操作用于删除目标缓存中存储的所述目标数据;
更新模块,用于在开始执行所述目标删除操作之后,基于所述目标操作请求对所述数据库中包括的所述目标数据进行更新,得到更新数据;
第二删除模块,用于在确定从第一中间件中监听到第一目标消息的情况下,再次执行所述目标删除操作,其中,所述第一目标消息是在确定所述数据库中包括的所述目标数据完成所述更新之后所生成的并存储至所述第一中间件中的消息。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210570091.7A CN115048392A (zh) | 2022-05-24 | 2022-05-24 | 数据的删除方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210570091.7A CN115048392A (zh) | 2022-05-24 | 2022-05-24 | 数据的删除方法和装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048392A true CN115048392A (zh) | 2022-09-13 |
Family
ID=83160071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210570091.7A Pending CN115048392A (zh) | 2022-05-24 | 2022-05-24 | 数据的删除方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048392A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117193670A (zh) * | 2023-11-06 | 2023-12-08 | 之江实验室 | 一种清除缓存的方法、装置、存储介质以及电子设备 |
-
2022
- 2022-05-24 CN CN202210570091.7A patent/CN115048392A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117193670A (zh) * | 2023-11-06 | 2023-12-08 | 之江实验室 | 一种清除缓存的方法、装置、存储介质以及电子设备 |
CN117193670B (zh) * | 2023-11-06 | 2024-01-30 | 之江实验室 | 一种清除缓存的方法、装置、存储介质以及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021164487A1 (zh) | 一种数据的查询方法和装置 | |
US11310066B2 (en) | Method and apparatus for pushing information | |
CN108429777B (zh) | 一种基于缓存的数据更新方法及服务器 | |
CN105095374A (zh) | 移动终端新闻浏览的方法及装置 | |
CN111782672B (zh) | 多领域数据管理方法及相关装置 | |
CN107508914A (zh) | 一种基于云计算分析的消息精准推送方法和系统 | |
CN115048392A (zh) | 数据的删除方法和装置、存储介质及电子装置 | |
CN116033006A (zh) | 数据处理方法、系统、存储介质及电子装置 | |
JP7221652B6 (ja) | 外部変更検出 | |
CN115905255A (zh) | 一种缓存与数据库一致性的方法、存储介质及电子装置 | |
CN105242960A (zh) | 一种处理系统功能调用请求的方法及浏览器 | |
CN115174512A (zh) | 消息推送方法及装置、存储介质及电子装置 | |
CN115345225A (zh) | 推荐场景的确定方法及装置、存储介质及电子装置 | |
CN114780565A (zh) | 缓存的更新方法和装置、存储介质及电子装置 | |
CN115291793A (zh) | 属性数据的转换方法和装置、存储介质及电子装置 | |
CN114864047A (zh) | 食谱推荐方法、存储介质及电子装置 | |
US20210173729A1 (en) | Systems and methods of application program interface (api) parameter monitoring | |
CN112035102A (zh) | 数据接口的配置方法及装置、存储介质、电子装置 | |
US10642821B2 (en) | Elastic data storage system | |
CN115576966A (zh) | 数据更新方法、装置、存储介质及电子装置 | |
CN110875831A (zh) | 监测网络质量的方法和装置 | |
CN115658178A (zh) | 用户行为动态埋点数据的采集方法及装置、存储介质 | |
CN112787850B (zh) | 每秒查询率的调整方法、系统、装置及存储介质 | |
CN116048823A (zh) | 一种数据请求的处理方法、装置、电子设备及存储介质 | |
CN116561163A (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 |