CN110515962B - 缓存数据的方法、装置、电子设备及存储介质 - Google Patents

缓存数据的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110515962B
CN110515962B CN201910814300.6A CN201910814300A CN110515962B CN 110515962 B CN110515962 B CN 110515962B CN 201910814300 A CN201910814300 A CN 201910814300A CN 110515962 B CN110515962 B CN 110515962B
Authority
CN
China
Prior art keywords
data
cache
database
user request
updated
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.)
Active
Application number
CN201910814300.6A
Other languages
English (en)
Other versions
CN110515962A (zh
Inventor
张胜杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN201910814300.6A priority Critical patent/CN110515962B/zh
Publication of CN110515962A publication Critical patent/CN110515962A/zh
Application granted granted Critical
Publication of CN110515962B publication Critical patent/CN110515962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了缓存数据的方法、装置、电子设备及存储介质,属于互联网技术领域。方法包括:基于所接收的用户请求,获取数据库中的用户请求对应的数据,将数据存储于第一缓存中。持续检测数据库中的数据的更新情况。若检测到数据库中的数据被更新,基于数据库中更新后的数据更新第一缓存中的数据。本申请通过对数据库中的数据的更新情况进行检测,使得第一缓存中的数据能够及时根据数据库中的数据的更新而更新,保证了数据库与第一缓存所存储的数据的一致性。因此,通过第一缓存中所存储的数据对用户请求进行处理得到的处理结果较为准确,基于该处理结果提供给用户的服务满足用户需求,用户的使用体验好。

Description

缓存数据的方法、装置、电子设备及存储介质
技术领域
本申请涉及互联网技术领域,特别涉及一种缓存数据的方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的发展,应用互联网服务的用户数量越来越多,从而使得互联网服务的数据库所需处理的用户请求数量也越来越多。对此,常常在数据库以外设置缓存层来缓存数据库中的数据,则通过缓存层即可对部分用户请求进行处理,从而降低数据库所需处理的用户请求数量。
相关技术提供一种缓存数据的方法,该方法在用户端与数据库之间设置物理缓存服务器,从数据库中获取数据存储于该物理缓存服务器中,且所存储的数据定时失效。
然而,在物理缓存服务器中所存储的数据定时失效之前,物理缓存服务器中的数据始终保持不变。若数据库中的数据在定时失效之前发生更新,则会导致物理缓存服务器与数据库中存储的数据不一致,从而通过该物理缓存服务器得到的处理结果存在错误,进而使得基于该处理结果提供给用户的服务有所偏差。因此,应用相关技术缓存数据会影响正常的用户服务,从而影响了用户的使用体验。
发明内容
本申请实施例提供了一种缓存数据的方法、装置、电子设备及存储介质,以解决相关技术缓存数据的效果较差、影响了用户的使用体验的问题。所述技术方案如下:
一方面,提供了一种缓存数据的方法,所述方法包括:
基于所接收的用户请求,获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中;
持续检测所述数据库中的数据的更新情况;
若检测到所述数据库中的数据被更新,基于所述数据库中更新后的数据更新所述第一缓存中的数据。
可选地,所述基于所接收的用户请求,获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中,包括:
通过面向切面编程AOP注解拦截所述用户请求,所述AOP注解用于执行与所述第一缓存相关的流程;
从所述数据库中获取所述用户请求对应的数据;
通过所述AOP注解调用所述第一缓存来存储所述用户请求对应的数据。
可选地,所述根据面向切面编程AOP注解拦截所述用户请求之前,所述方法还包括:
获取所述AOP注解;
在目标代码的存储位置之前添加所述AOP注解,所述目标代码用于调用所述数据库处理所述用户请求。
可选地,所述数据库中的数据位于一个或多个表格中,每个表格具有表格标识;
所述获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中之后,所述方法还包括:
获取所述数据库中的数据所位于的每个表格的表格标识及所述用户请求的对应关系;
将所述表格标识及用户请求的对应关系存储于第二缓存中。
可选地,所述基于所述数据库中更新后的数据更新所述第一缓存中的数据,包括:
获取所述数据库中更新后的数据所位于的表格的目标表格标识;
查询所述第二缓存,根据所述第二缓存中存储的所述表格标识及用户请求的对应关系,确定所述目标表格标识对应的一个或多个目标用户请求;
根据所述目标用户请求从所述第一缓存中的数据中确定待更新的目标数据;
按照所述更新后的数据更新所述目标数据。
可选地,所述第一缓存按照string类型对所述数据进行存储。
可选地,所述第二缓存按照zset类型对所述表格标识及所述用户请求的对应关系进行存储。
一方面,提供了一种缓存数据的装置,所述装置包括:
获取模块,用于基于所接收的用户请求,获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中;
检测模块,用于持续检测所述数据库中的数据的更新情况;
更新模块,用于若检测到所述数据库中的数据被更新,基于所述数据库中更新后的数据更新所述第一缓存中的数据。
可选地,所述获取模块,用于通过面向切面编程AOP注解拦截所述用户请求,所述AOP注解用于执行与所述第一缓存相关的流程;从所述数据库中获取所述用户请求对应的数据;通过所述AOP注解调用所述第一缓存来存储所述用户请求对应的数据。
可选地,所述装置还包括:获取所述AOP注解;在目标代码的存储位置之前添加所述AOP注解,所述目标代码用于调用所述数据库处理所述用户请求。
可选地,所述数据库中的数据位于一个或多个表格中,每个表格具有表格标识;
所述装置还包括:存储模块,用于获取所述数据库中的数据所位于的每个表格的表格标识及所述用户请求的对应关系;将所述表格标识及用户请求的对应关系存储于第二缓存中。
可选地,所述更新模块,用于获取所述数据库中更新后的数据所位于的表格的目标表格标识;查询所述第二缓存,根据所述第二缓存中存储的所述表格标识及用户请求的对应关系,确定所述目标表格标识对应的一个或多个目标用户请求;根据所述目标用户请求从所述第一缓存中的数据中确定待更新的目标数据;按照所述更新后的数据更新所述目标数据。
可选地,所述第一缓存按照string类型对所述数据进行存储。
可选地,所述第二缓存按照zset类型对所述表格标识及所述用户请求的对应关系进行存储。
一方面,提供了一种电子设备,所述电子设备包括存储器及处理器;所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现本申请实施例的任一种可能的实现方式所提供的缓存数据的方法。
另一方面,提供了一种可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现本申请实施例的任一种可能的实现方式所提供的缓存数据的方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例通过对数据库中的数据的更新情况进行检测,使得第一缓存中的数据能够及时根据数据库中的数据的更新而更新,保证了数据库与第一缓存所存储的数据的一致性。因此,通过第一缓存中所存储的数据对用户请求进行处理得到的处理结果较为准确,基于该处理结果提供给用户的服务满足用户需求,用户的使用体验好。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的实施环境示意图;
图2是本申请实施例提供的缓存数据的方法流程图;
图3是本申请实施例提供的缓存数据的方法的流程图;
图4是本申请实施例提供的缓存数据的方法的流程示意图;
图5是本申请实施例提供的缓存数据的装置的结构示意图;
图6是本申请实施例提供的终端结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种缓存数据的方法,该方法可应用于如图1所示的实施环境中。图1中,包括至少一个用户终端11、第一服务器12和第二服务器13,第一服务器12上安装有第一缓存,第二服务器13用于运行数据库。用户终端11与第一服务器12进行通信连接,以从第一缓存12上获取所发送的用户请求的处理结果。第一服务器12还与第二服务器13通信连接,以从第二服务器13上所运行的数据库13上下载数据。
其中,用户终端11可以是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如PC(PersonalComputer,个人计算机)、手机、智能手机、PDA(Personal Digital Assistant,个人数字助手)、可穿戴设备、掌上电脑PPC(Pocket PC)、平板电脑、智能车机、智能电视、智能音箱等。
第一服务器12和第二服务器13均可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。
本领域技术人员应能理解上述用户终端11、第一服务器12和第二服务器13仅为举例,其他现有的或今后可能出现的终端或服务器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
基于上述图1所示的实施环境,参见图2,本申请实施例提供了一种缓存数据的方法,该方法可应用于图1所示的实施环境中,如图2所示,该方法包括:
步骤201,基于所接收的用户请求,获取数据库中的用户请求对应的数据,将数据存储于第一缓存中。
可选地,基于所接收的用户请求,获取数据库中的用户请求对应的数据,将数据存储于第一缓存中,包括:通过面向切面编程AOP注解拦截用户请求,AOP注解用于执行与第一缓存相关的流程;从数据库中获取用户请求对应的数据;通过AOP注解调用第一缓存来存储用户请求对应的数据。
可选地,根据面向切面编程AOP注解拦截用户请求之前,方法还包括:获取AOP注解;在目标代码的存储位置之前添加AOP注解,目标代码用于调用数据库处理用户请求。
可选地,数据库中的数据位于一个或多个表格中,每个表格具有表格标识;
获取数据库中的用户请求对应的数据,将数据存储于第一缓存中之后,方法还包括:获取数据库中的数据所位于的每个表格的表格标识及用户请求的对应关系;将表格标识及用户请求的对应关系存储于第二缓存中。
步骤202,持续检测数据库中的数据的更新情况。
步骤203,若检测到数据库中的数据被更新,基于数据库中更新后的数据更新第一缓存中的数据。
可选地,基于数据库中更新后的数据更新第一缓存中的数据,包括:获取数据库中更新后的数据所位于的表格的目标表格标识;查询第二缓存,根据第二缓存中存储的表格标识及用户请求的对应关系,确定目标表格标识对应的一个或多个目标用户请求;根据目标用户请求从第一缓存中的数据中确定待更新的目标数据;按照更新后的数据更新目标数据。
可选地,第一缓存按照string类型对数据进行存储。
可选地,第二缓存按照zset类型对表格标识及用户请求的对应关系进行存储。
参见图3,本申请实施例提供了一种缓存数据的方法,该方法可应用于图1所示的实施环境中。该方法包括:
步骤301,获取AOP注解。
其中,AOP(Aspect Oriented Programming,面向切面编程)注解具有对应的代码,代码用于指示第一服务器执行与第一缓存相关的流程。当第一服务器读取到AOP注解时,便可运行AOP注解对应的代码,从而根据所运行的代码来执行一个或多个与第一缓存相关的流程。在本实施例中,AOP注解对应的代码所指示的流程包括但不限于调用第一缓存、基于第一缓存进行降级以及更新第一缓存中的数据,后文中会加以详细说明。
对于获取AOP注解的方式,可先基于第一缓存的存储路径编辑得到代码,再设置与该代码对应的AOP注解,从而实现AOP注解的获取。当然,本实施例不对获取AOP注解的方式加以限定。例如,也可根据需要直接调用参考代码来获取AOP注解。
步骤302,在目标代码的存储位置之前添加AOP注解。
其中,目标代码用于对数据库进行调用。也就是说,若第一服务器读取到目标代码,则通过运行目标代码便可实现对数据库的调用。而在本实施例中,通过将AOP注解添加于目标代码的存储位置之前,使得第一服务器在读取到目标代码之前,先读取AOP注解。因此,第一服务器首先运行AOP注解对应的代码来执行与第一缓存相关的流程,在与第一缓存相关的流程无法正常进行的情况下,才运行目标代码来调用数据库。
步骤303,当接收到用户请求时,通过AOP注解拦截用户请求。
其中,用户请求可由用户端通过接口发送,用户请求的形式可以为请求类型+请求对象。例如,请求类型为获取地址、请求对象为张三的用户请求可以表示为get address(张三)。本实施例不对用户请求的形式加以限定。
相应地,参见图4中的a,第一服务器可通过接口接收该用户请求。之后,首先通过AOP注解拦截该用户请求,以避免直接调用数据库对该用户请求进行处理。拦截得到用户请求之后,参见图4中的b,第一服务器便可运行AOP对应的代码来执行上述说明中的调用第一缓存,以通过第一缓存处理该用户请求。
若第一缓存中存储有该用户请求对应的数据,则第一缓存可直接根据所存储的数据对用户请求进行处理,得到处理结果,并基于处理结果向用户端提供相应的服务。若第一缓存中未存储有该用户请求对应的数据,则参见图4中的c,第一服务器需要进一步从数据库中获取用户请求对应的数据。
在实施中,确定方式包括但不限于:检测第一服务器在历史运行过程中是否接收过该用户请求。若第一服务器在历史运行过程中接收过该用户请求,则说明第一服务器已从数据库中获取过该用户请求对应的数据并存储于第一缓存中,即可确定第一缓存中存储有该用户请求对应的数据。反之,若第一服务器在历史运行过程中未接收过该用户请求,则确定第一缓存中未存储该用户请求对应的数据,从而可从数据库中获取用于处理用户请求的数据作为参考数据。
步骤304,从数据库中获取用户请求对应的数据。
若第一缓存中未存储有该用户请求对应的数据,则第一服务器可将拦截得到的用户请求转发给数据库所在的第二服务器。相应地,第二服务器访问该数据库进行查询,从而得到用户请求对应的数据。之后,第二服务器将用户请求对应的数据返回给第一服务器,以实现第一服务器从数据库中获取用户请求对应的数据。
步骤305,通过AOP注解调用第一缓存来存储用户请求对应的数据。
第一服务器获取到用户请求对应的数据之后,参见图4中的d,可调用第一缓存来存储该用户请求对应的数据。因此,在第一服务器后续运行过程中,若接收到相同的用户请求,则无需再从数据库获取数据,通过第一缓存中存储用户请求对应的数据便可处理该用户请求。
对于第一缓存存储用户请求对应的数据的方式,可选地,第一缓存按照string类型对用户请求对应的数据进行存储。其中,string类型是指key(请求)与value(返回值)一一对应的存储类型。在本实施例中,key指的是用户请求,value指的是用户请求对应的数据。因此,第一缓存将用户请求与数据对应存储,即第一缓存中存储有用户请求与数据的对应关系。
在一种可选的实施方式中,拦截得到用户请求之后,第一服务器还可先检测第一缓存是否可用。若第一缓存可用,则可按照步骤303中的说明,通过第一缓存处理该用户请求。若第一缓存不可用,则可采用步骤301中的基于第一缓存进行降级的方式来处理该用户请求。其中,基于第一缓存进行降级的方式是指:在第一缓存不可用的情况下,第一服务器不再对第一缓存进行调用,而是直接运行目标代码,根据目标代码调用数据库,从而实现用户请求的处理。
步骤306,获取数据库中的数据所位于的每个表格的表格标识及用户请求的对应关系。
其中,数据库可通过表格形式对数据进行存储,因而从数据库中获取的用户请求对应的数据可能位于一个或多个表格中。每个表格均具有表格标识,表格标识用于对不同的表格进行区分。例如,表格标识可以为表1、表2、表3等标识,本实施例不对表格标识的形式加以限定。每个表格包括一项或多项数据,不同数据通过主键值加以区分。例如“A数据”与“B数据”具有不同的主键值,而“A数据的英文表达形式”与“A数据”则具有相同的主键值。可以看出,通过表格标识+主键值便可确定数据库中的任一项数据。
在确定数据库中的用户请求对应的数据所位于的表格之后,可得到数据库中的数据所位于的每个表格的表格标识,进而得到表格标识及用户请求的对应关系。例如,用户请求A对应的数据位于表1中,则表格标识与用户请求的对应关系即为用户请求A与表1的对应关系。
需要说明的是,用户请求对应的数据可能来源于多个数据库,则需要从多个数据库中的每个数据库分别获取表格标识。将从一个数据库获取表格标识的过程作为一个线程,则从多个数据库中的每个数据库中分别获取表格标识可以看作是同步进行的多个线程。对此,本实施例可通过ThreadLocal对多个线程进行合并,从而完成表格标识及用户请求的对应关系的获取。也就是说,通过ThreadLocal对每个数据库中获取的表格标识进行合并,得到表格标识的集合。之后,便可获取到将该表格标识的集合与用户请求之间的对应关系,从而完成对应关系的获取。
步骤307,将表格标识及用户请求的对应关系存储于第二缓存中。
参见图4中的e,获取表格标识及用户请求的对应关系之后,便可将表格标识及用户请求的对应关系存储于第二缓存中。需要说明的是,除了按照上述说明将用户请求与数据的对应关系存储于第一缓存中、将表格标识与用户请求的对应关系存储于第二缓存中以外,还可将第一缓存与第二缓存集成为一个目标缓存。在该目标缓存中,用户请求与数据的对应关系、表格标识与用户请求的对应关系分隔存储,不仅避免了两种对应关系相互影响,而且简化了数据处理过程。
进一步地,在多个表格标识及用户请求的对应关系中,可能存在多个对应关系中涉及的表格标识相同,也就是多个用户请求对应同样的表格标识的情况。因此,在一种可选的实施方式中,第二缓存按照zset类型对表格标识及用户请求的对应关系进行存储,zset类型是指一个key与多个value对应存储的类型。在第二缓存中,key即为表格标识,value即为用户请求,且多个用户请求按照参考条件(如存储于第二缓存中的时间)排序。
以用户请求A对应表1、用户请求B也对应表1为例,将表1与用户请求A的对应关系、表1与用户请求B的对应关系依次存储于第二缓存之后,第二缓存中表1既对应用户请求A、又对应用户请求B,从而形成一对多的存储形式。
另外,本实施例中涉及的将用户请求与数据的对应关系存储于第一缓存中、将表格标识及用户请求的对应关系存储于第二缓存中均采用尽力(best effort)存储方式。尽力存储方式是指:即使存储过程失败,也不再进行重试的方式。采用尽力存储方式的原因在于:即使一次存储过程失败(失败概率约为万分之一),所造成的后果也只是在下次接收到同样的用户请求时需要再次访问数据库,该后果的影响较小。因此,无需耗费处理资源进行重试,只要在下次访问数据库之后再基于获取到的用户请求对应的数据进行存储即可。
步骤308,持续检测数据库中的数据的更新情况。
其中,将数据库中的数据存储于第一缓存中之后,数据库中的数据可能发生更新,则第一缓存中的数据与数据库中的数据不一致,若仍通过第一缓存中的数据对用户请求进行处理,则可能得到错误的处理结果,从而使得基于该错误的处理结果提供给用户端的服务存在偏差。基于上述考虑,本实施例还根据AOP注解持续监测数据库中的数据的更新情况,以保证对第一缓存中的数据进行及时更新。
在实施中,参见图4中的f,可通过数据变更抓取系统来检测数据库中的数据的更新情况,数据变更抓取系统包括但不限于Databus。若数据库中的数据被更新,则数据变更抓取系统便可抓取到已更新的数据,即检测到数据库中的数据发生更新。
需要说明的是,在当前互联网架构中,常常设置有多个数据库,每个数据库仅提供部分互联网服务。上述说明中的数据库均为用于处理用户请求的数据库,除了上述说明中的数据库以外,还可设置有用于接收数据更新的第一数据库。在这一架构中,数据变更抓取系统从第一数据库中抓取已更新的数据,并根据第一数据库中已更新的数据来更新上述说明中的数据库中的数据,从而间接检测到上述说明中的数据库中的数据被更新。
当然,无论通过何种方式来检测数据库中的参考数据的更新情况,若检测到数据库中的参考数据被更新,则可触发对第一缓存中的参考数据的更新,详见步骤309。
步骤309,若检测到数据库中的数据被更新,获取数据库中更新后的数据所位于的表格的目标表格标识。
由于数据库中的数据均存储于表格中,因而在获取数据库中更新后的数据之后,便可获取到数据库中更新后的参考数据所位于的表格的目标表格标识。
步骤310,查询第二缓存,根据第二缓存中存储的表格标识及用户请求的对应关系,确定目标表格标识对应的一个或多个目标用户请求。
对于获取的目标表格标识,参见图4中的g,查询第二缓存中所存储的所有表格标识及用户请求的对应关系,便可确定目标标识对应的一个或多个目标用户请求。例如,目标表格标识为表1,通过查询第二缓存中存储的对应关系,确定表1与用户请求A、用户请求B相对应,则可确定用户请求A、用户请求B为目标用户请求。
步骤311,根据目标用户请求从第一缓存中的数据中确定待更新的目标数据。
根据第一缓存中所存储的用户请求与数据的对应关系,参见图4中的h,便可确定第一缓存中与目标用户请求对应的数据,从而将与目标用户请求对应的数据作为待更新的目标数据。仍以步骤310所举例的用户请求A、用户请求B为目标用户请求为例,则目标数据即为位于表1中的数据。
步骤312,按照更新后的数据更新目标数据。
确定待更新的目标数据之后,可按照数据库中更新后的数据来更新目标数据。更新过程可以是直接失效目标数据,则第一缓存中目标用户请求不再有对应存储的数据。后续第一服务器接收到目标用户请求时,可按照步骤303-307所说明的方法重新从数据库中获取数据库中更新后的数据与目标用户请求对应存储即可。
或者,更新过程也可以是将数据库中的更新后的数据替换目标数据。替换过程中,可以将第一缓存中目标数据所在的表格全部替换成数据库中更新后的数据所在的表格,也可以先确定数据库中更新后的数据的主键值,从目标数据中找到同样具有该主键值的数据,从而同样具有该主键值的数据替换为数据库中更新后的数据,实现目标数据的更新。
需要说明的是,若上述更新目标数据的过程失败,则需要进行重试,以保证目标数据被成功更新。进行重试的原因在于:若更新失败,则目标数据与更新后的数据存在不一致。后续通过目标数据对用户请求进行处理所得到的处理结果便存在错误,从而导致后果为基于该处理结果提供给用户端的服务存在偏差,该后果对提供正常用户服务的影响较大。因此,更新目标数据的过程可进行参考次数的重试,若重试参考次数后仍更新失败,则第一服务器可进行报错,以便于该目标数据可转由人工更新的方式实现更新。本实施例对参考次数的具体数值不加以限定,例如,参考次数可以为3次。
综上所述,本实施例在从数据库中获取参考数据存储于第一缓存之后,持续对数据库中的参考数据的更新情况进行检测,从而使得第一缓存中的参考数据能够及时根据数据库中的参考数据的更新而更新,保证了数据库与第一缓存所存储的参考数据的一致性,即实现了精确性缓存。因此,通过第一缓存中所存储的数据对用户请求进行处理所得到的处理结果较为准确,基于该处理结果提供给用户的服务满足用户需要,用户的使用体验较佳。
另外,当接收到用户请求时,本实施例还通过AOP注解来在不修改数据库原有代码的前提下实现先访问第一缓存,若第一缓存无法处理再访问数据库的处理流程。由于通过AOP注解实现上述处理流程无需修改数据库的原有代码,相当于将上述处理流程封装在隐藏的切面层中,因而数据库对第一缓存无感知,做到了非侵入缓存。因此,本实施例所提供的缓存数据的方法既具有精确性、又具有非侵入缓存,从而使得本实施例提供的缓存数据的方法的通用性较强,适用范围广。目前,该方法已应用在金融服务业务(例如支付业务)的收单平台Freeway系统中,该系统为收单平台核心查询系统,用于处理用户端发送的订单查询请求,支持日订单2200万的查询峰值。
基于相同构思,本申请实施例提供了一种缓存数据的装置,参见图5,该装置包括:
获取模块,用于基于所接收的用户请求,获取数据库中的用户请求对应的数据,将数据存储于第一缓存中;
检测模块,用于持续检测数据库中的数据的更新情况;
更新模块,用于若检测到数据库中的数据被更新,基于数据库中更新后的数据更新第一缓存中的数据。
可选地,获取模块,用于通过面向切面编程AOP注解拦截用户请求,AOP注解用于执行与第一缓存相关的流程;从数据库中获取用户请求对应的数据;通过AOP注解调用第一缓存来存储用户请求对应的数据。
可选地,装置还包括:获取AOP注解;在目标代码的存储位置之前添加AOP注解,目标代码用于调用数据库处理用户请求。
可选地,数据库中的数据位于一个或多个表格中,每个表格具有表格标识;
装置还包括:存储模块,用于获取数据库中的数据所位于的每个表格的表格标识及用户请求的对应关系;将表格标识及用户请求的对应关系存储于第二缓存中。
可选地,更新模块,用于获取数据库中更新后的数据所位于的表格的目标表格标识;查询第二缓存,根据第二缓存中存储的表格标识及用户请求的对应关系,确定目标表格标识对应的一个或多个目标用户请求;根据目标用户请求从第一缓存中的数据中确定待更新的目标数据;按照更新后的数据更新目标数据。
可选地,第一缓存按照string类型对数据进行存储。
可选地,第二缓存按照zset类型对表格标识及用户请求的对应关系进行存储。
综上所述,本实施例在从数据库中获取参考数据存储于第一缓存之后,持续对数据库中的参考数据的更新情况进行检测,从而使得第一缓存中的参考数据能够及时根据数据库中的参考数据的更新而更新,保证了数据库与第一缓存所存储的参考数据的一致性,即实现了精确性缓存。因此,通过第一缓存中所存储的数据对用户请求进行处理所得到的处理结果较为准确,基于该处理结果提供给用户的服务满足用户需要,用户的使用体验较佳。
另外,当接收到用户请求时,本实施例还通过AOP注解来在不修改数据库原有代码的前提下实现先访问第一缓存,若第一缓存无法处理再访问数据库的处理流程。由于通过AOP注解实现上述处理流程无需修改数据库的原有代码,相当于将上述处理流程封装在隐藏的切面层中,因而数据库对第一缓存无感知,做到了非侵入缓存。因此,本实施例所提供的缓存数据的方法既具有精确性、又具有非侵入缓存,从而使得本实施例提供的缓存数据的方法的通用性较强,适用范围广。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图6,其示出了本申请实施例提供的一种终端600的结构示意图。该终端600可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、6核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)所组成的群组中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(CentralProcessing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏605所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的缓存数据的方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、显示屏605、摄像头606、音频电路607、定位组件608和电源609所组成的群组中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及6G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器610可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在显示屏605的下层时,由处理器601根据用户对显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件所组成的群组中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制显示屏605的显示亮度。具体地,当环境光强度较高时,调高显示屏605的显示亮度;当环境光强度较低时,调低触示屏606的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
基于相同构思,本申请实施例提供了一种电子设备,电子设备包括存储器及处理器;存储器中存储有至少一条指令,至少一条指令由处理器加载并执行,以实现本申请实施例的任一种可能的实现方式所提供的缓存数据的方法。
基于相同构思,本申请实施例提供了一种可读存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现本申请实施例的任一种可能的实现方式所提供的缓存数据的方法。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种缓存数据的方法,其特征在于,所述方法包括:
基于所接收的用户请求,确定第一缓存是否可用,响应于所述第一缓存可用,获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中;
持续检测所述数据库中的数据的更新情况;
若检测到所述数据库中的数据被更新,获取所述数据库中更新后的数据所位于的表格的目标表格标识,查询第二缓存,根据所述第二缓存中存储的表格标识及用户请求的对应关系,确定所述目标表格标识对应的一个或多个目标用户请求,根据所述目标用户请求从所述第一缓存中的数据中确定待更新的目标数据,确定所述数据库中更新后的数据的主键值,将所述目标数据中具有所述主键值的数据替换为所述数据库中更新后的数据;
响应于所述第一缓存中的数据更新失败,进行参考次数的重试,响应于重试参考次数后失败则进行报错,以使得所述第一缓存中的数据更新成功;
响应于所述第一缓存不可用,运行目标代码,根据所述目标代码调用所述数据库,以处理所述用户请求。
2.根据权利要求1所述的方法,其特征在于,所述基于所接收的用户请求,确定第一缓存是否可用,响应于所述第一缓存可用,获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中,包括:
通过面向切面编程AOP注解拦截所述用户请求,所述AOP注解用于执行与所述第一缓存相关的流程;
从所述数据库中获取所述用户请求对应的数据;
通过所述AOP注解调用所述第一缓存来存储所述用户请求对应的数据。
3.根据权利要求2所述的方法,其特征在于,所述通过面向切面编程AOP注解拦截所述用户请求之前,所述方法还包括:
获取所述AOP注解;
在目标代码的存储位置之前添加所述AOP注解,所述目标代码用于调用所述数据库。
4.根据权利要求2所述的方法,其特征在于,所述数据库中的数据位于一个或多个表格中,每个表格具有表格标识;
所述获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中之后,所述方法还包括:
获取所述数据库中的数据所位于的每个表格的表格标识及所述用户请求的对应关系;
将所述表格标识及用户请求的对应关系存储于第二缓存中,所述第二缓存用于更新所述第一缓存中的数据。
5.根据权利要求1-4任一所述的方法,其特征在于,所述第一缓存按照string类型对所述数据进行存储。
6.根据权利要求1或4所述的方法,其特征在于,所述第二缓存按照zset类型对所述表格标识及所述用户请求的对应关系进行存储。
7.一种缓存数据的装置,其特征在于,所述装置包括:
获取模块,用于基于所接收的用户请求,确定第一缓存是否可用,响应于所述第一缓存可用,获取数据库中的所述用户请求对应的数据,将所述数据存储于第一缓存中;
检测模块,用于持续检测所述数据库中的数据的更新情况;
更新模块,用于若检测到所述数据库中的数据被更新,获取所述数据库中更新后的数据所位于的表格的目标表格标识,查询第二缓存,根据所述第二缓存中存储的表格标识及用户请求的对应关系,确定所述目标表格标识对应的一个或多个目标用户请求,根据所述目标用户请求从所述第一缓存中的数据中确定待更新的目标数据,确定所述数据库中更新后的数据的主键值,将所述目标数据中具有所述主键值的数据替换为所述数据库中更新后的数据;响应于所述第一缓存中的数据更新失败,进行参考次数的重试,响应于重试参考次数后失败则进行报错,以使得所述第一缓存中的数据更新成功;响应于所述第一缓存不可用,运行目标代码,根据所述目标代码调用所述数据库,以处理所述用户请求。
8.一种电子设备,其特征在于,所述电子设备包括存储器及处理器;所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现权利要求1-6任一所述的缓存数据的方法。
9.一种可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1-6任一所述的缓存数据的方法。
CN201910814300.6A 2019-08-30 2019-08-30 缓存数据的方法、装置、电子设备及存储介质 Active CN110515962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910814300.6A CN110515962B (zh) 2019-08-30 2019-08-30 缓存数据的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910814300.6A CN110515962B (zh) 2019-08-30 2019-08-30 缓存数据的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110515962A CN110515962A (zh) 2019-11-29
CN110515962B true CN110515962B (zh) 2021-06-25

Family

ID=68628386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910814300.6A Active CN110515962B (zh) 2019-08-30 2019-08-30 缓存数据的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110515962B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259033B (zh) * 2020-02-12 2022-09-02 江苏满运软件科技有限公司 数据更新方法、装置、电子设备及可读存储介质
CN111695986B (zh) * 2020-05-29 2023-09-26 中国建设银行股份有限公司 公积金影像管控方法和装置
CN113885802A (zh) * 2021-09-30 2022-01-04 杭州贝嘟科技有限公司 数据传输方法、装置、电子装置和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999319B (zh) * 2011-09-09 2016-08-10 北京大学 一种基于aop技术缓存函数执行结果的方法及系统
CN102981823B (zh) * 2012-10-25 2015-09-30 四川农业大学 一种领域驱动开发插件系统
US20170150214A1 (en) * 2015-11-25 2017-05-25 Le Holdings (Beijing) Co., Ltd. Method and apparatus for data processing
CN106033474A (zh) * 2016-04-21 2016-10-19 苏州奖多多科技有限公司 一种数据同步更新方法、装置及电子设备
CN107066570A (zh) * 2017-04-07 2017-08-18 聚好看科技股份有限公司 数据管理方法及装置
CN109739656B (zh) * 2018-11-29 2020-11-27 东软集团股份有限公司 接口数据模拟方法、装置、存储介质和电子设备

Also Published As

Publication number Publication date
CN110515962A (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
CN110674022B (zh) 行为数据获取方法、装置及存储介质
CN110515962B (zh) 缓存数据的方法、装置、电子设备及存储介质
CN110058935B (zh) 日志级别调整方法、装置及系统、可读存储介质
CN111159604A (zh) 图片资源加载方法及装置
CN110851823A (zh) 数据访问方法、装置、终端及存储介质
CN111625315A (zh) 页面显示方法、装置、电子设备及存储介质
CN110825465B (zh) 日志数据处理方法、装置、电子设备及存储介质
CN110569064B (zh) 接口标识生成方法、装置、设备及存储介质
CN111008083B (zh) 页面通信方法、装置、电子设备及存储介质
CN111881423A (zh) 限制功能使用授权方法、装置、系统
CN111580892B (zh) 一种业务组件调用的方法、装置、终端和存储介质
CN111258683A (zh) 检测方法、装置、计算机设备及存储介质
CN111241451A (zh) 网页处理方法、装置、计算机设备及存储介质
CN108038232B (zh) 网页编辑方法、装置和系统、存储介质
CN112181915A (zh) 执行业务的方法、装置、终端和存储介质
CN112597417B (zh) 页面更新方法、装置、电子设备及存储介质
CN116842047A (zh) 缓存更新方法、装置、设备及计算机可读存储介质
CN112765571A (zh) 权限管理方法、系统、装置、服务器及存储介质
CN111752831A (zh) 健壮性检测方法、装置、计算机设备及存储介质
CN113158099A (zh) 页面显示方法、装置和存储介质
CN112000576A (zh) 代码数据的检测方法、装置、设备及存储介质
CN113392120A (zh) 获取SQLite的执行信息的方法及装置
CN111523876A (zh) 支付方式的显示方法、装置、系统及存储介质
CN111191254A (zh) 访问校验方法、装置、计算机设备及存储介质
CN111414563B (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
GR01 Patent grant
GR01 Patent grant