CN113010552B - 数据处理方法、系统、计算机可读介质及电子设备 - Google Patents

数据处理方法、系统、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN113010552B
CN113010552B CN202110231346.2A CN202110231346A CN113010552B CN 113010552 B CN113010552 B CN 113010552B CN 202110231346 A CN202110231346 A CN 202110231346A CN 113010552 B CN113010552 B CN 113010552B
Authority
CN
China
Prior art keywords
data
target
time
query request
cache data
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
CN202110231346.2A
Other languages
English (en)
Other versions
CN113010552A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110231346.2A priority Critical patent/CN113010552B/zh
Publication of CN113010552A publication Critical patent/CN113010552A/zh
Application granted granted Critical
Publication of CN113010552B publication Critical patent/CN113010552B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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
    • 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/2453Query optimisation
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

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)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请属于本申请属于计算机技术领域,具体涉及一种数据处理方法、系统、计算机可读介质及电子设备。该数据处理方法包括:响应于数据查询请求,在缓存中查找与数据查询请求相匹配的目标缓存数据;获取目标缓存数据的超时时间,并确定超时时间是否已过期,超时时间小于目标缓存数据的失效时间;若超时时间未过期,则向数据查询请求的请求方返回目标缓存数据;若超时时间已过期,则延长目标缓存数据的超时时间,并在数据库中查找与数据查询请求相匹配的目标数据库数据。基于该方法能够避免大量查询同时在查询一个缓存数据且当该缓存数据刚好失效时发生的缓存击穿和查询故障问题,还能够避免查询数据库时间造成请求的等待,从而提高系统响应速度。

Description

数据处理方法、系统、计算机可读介质及电子设备
技术领域
本申请属于计算机技术领域,具体涉及一种数据处理方法、系统、计算机可读介质及电子设备。
背景技术
在高并发系统中,存在“缓存击穿”,即大量请求同时查询某一或某些缓存数据,当该缓存数据刚好失效时,会导致大量请求直接访问数据库,对数据库造成冲击,造成数据库和缓存的查询故障问题。
即使大量请求同时查询一个缓存数据,缓存数据失效时仅有少量请求直接访问数据库不造成数据库的崩溃,也需要等待请求读取数据库完成并对缓存数据进行更新之后才能响应其他请求,从而造成数据查询的响应时间较长,系统响应性较差。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请的目的在于提供一种数据处理方法、系统、计算机可读介质及电子设备,至少在一定程度上克服相关技术中存在的缓存击穿、数据查询响应性差等技术问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种数据处理方法,该方法包括:
响应于数据查询请求,在缓存中查找与所述数据查询请求相匹配的目标缓存数据;
获取所述目标缓存数据的超时时间,并确定所述超时时间是否已过期,所述超时时间小于所述目标缓存数据的失效时间;
若所述超时时间未过期,则向所述数据查询请求的请求方返回所述目标缓存数据;
若所述超时时间已过期,则延长所述目标缓存数据的超时时间,并在数据库中查找与所述数据查询请求相匹配的目标数据库数据。
根据本申请实施例的一个方面,提供一种数据处理系统,该系统包括:
缓存查找模块,被配置为响应于数据查询请求,在缓存中查找与所述数据查询请求相匹配的目标缓存数据;
时间获取模块,被配置为获取所述目标缓存数据的超时时间,并确定所述超时时间是否已过期,所述超时时间小于所述目标缓存数据的失效时间;
第一执行模块,被配置为若所述超时时间未过期,则向所述数据查询请求的请求方返回所述目标缓存数据;
第二执行模块,被配置为若所述超时时间已过期,则延长所述目标缓存数据的超时时间,并在数据库中查找与所述数据查询请求相匹配的目标数据库数据。
在本申请的一些实施例中,基于以上技术方案,所述缓存查找模块包括:
第一关键字获取单元,被配置为获取所述数据查询请求中携带的查询关键字;
第一关键字匹配单元,被配置为在缓存中查找与所述查询关键字相匹配的目标关键字,并确定所述目标关键字的失效时间是否已过期;
缓存数据查找单元,被配置为若所述目标关键字的失效时间未过期,则将与所述目标关键字相关联的缓存数据确定为与所述数据查询请求相匹配的目标缓存数据。
在本申请的一些实施例中,基于以上技术方案,所述缓存查找模块还包括:
执行单元,被配置为若所述目标关键字的失效时间已过期,则在数据库中查找与所述目标关键字相关联的数据库数据;
缓存更新单元,被配置为根据查找得到的数据库数据更新与所述目标关键字相关联的缓存数据;
目标缓存数据获取单元,被配置为将更新后的缓存数据确定为与所述数据查询请求相匹配的目标缓存数据。
在本申请的一些实施例中,基于以上技术方案,所述第二执行模块包括:
第一延时单元,被配置为根据所述数据查询请求中携带的请求时间戳确定发起所述数据查询请求的请求时间;
第二延时单元,被配置为将所述目标缓存数据的超时时间延长至位于所述请求时间和所述目标缓存数据的失效时间之间的目标时间点。
在本申请的一些实施例中,基于以上技术方案,所述第二延时单元包括:
时间差获取子单元,被配置为获取所述请求时间与所述目标缓存数据的超时时间之间的时间差;
目标时间点选取子单元,被配置为根据所述时间差选取位于所述请求时间和所述目标缓存数据的失效时间之间的所述目标时间点;
延时子单元,被配置为将所述目标缓存数据的超时时间延长至所述目标时间点。
在本申请的一些实施例中,基于以上技术方案,所述第二执行模块还包括:
第二关键字获取单元,被配置为获取所述数据查询请求中携带的查询关键字;
第二关键字匹配单元,被配置为在数据库中查找与所述查询关键字相匹配的目标关键字;
数据库数据查找单元,被配置为将与所述目标关键字相关联的数据库数据确定为与所述数据查询请求相匹配的目标数据库数据。
在本申请的一些实施例中,基于以上技术方案,所述第二执行模块还包括:
加锁单元,被配置为通过发起所述数据查询请求的当前线程发起获取线程锁的加锁请求;
休眠单元,被配置为若所述当前线程加锁失败,则将所述当前线程配置为休眠状态;
运行单元,被配置为若所述当前线程加锁成功,则令所述当前线程保持运行状态。
在本申请的一些实施例中,基于以上技术方案,所述休眠单元包括:
监测子单元,被配置为监测所述当前线程以确定是否满足所述当前线程的唤醒条件;
唤醒子单元,被配置为当满足所述当前线程的唤醒条件时,将所述当前线程配置为运行状态,以通过所述当前线程重新发起数据查询请求。
在本申请的一些实施例中,基于以上技术方案,所述监测子单元包括:
时间监测子单元,被配置为监测所述当前线程的休眠时间;
第一执行子单元,被配置为若所述休眠时间大于或者等于预设的时间阈值,则确定满足所述当前线程的唤醒条件;
第二执行子单元,被配置为若所述休眠时间小于所述时间阈值,则确定不满足所述当前线程的唤醒条件。
在本申请的一些实施例中,基于以上技术方案,所述监测子单元包括:
状态监测子单元,被配置为监测所述当前线程请求获取的线程锁的当前状态;
第三执行子单元,被配置为若所述线程锁处于释放状态,则确定满足所述当前线程的唤醒条件;
第四执行子单元,被配置为若所述线程锁处于锁定状态,则确定不满足所述当前线程的唤醒条件。
在本申请的一些实施例中,基于以上技术方案,所述线程锁为互斥锁。
在本申请的一些实施例中,基于以上技术方案,所述第二执行模块还包括:
缓存更新单元,被配置为根据所述目标数据库数据更新所述缓存中的目标缓存数据;
时间重置单元,被配置为重置所述目标缓存数据的超时时间和失效时间;
数据返回单元,被配置为释放所述线程锁,并向所述数据查询请求的请求方返回更新后的目标缓存数据。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的数据处理方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的数据处理方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的数据处理方法。
在本申请实施例提供的技术方案中,通过在目标缓存数据的超时时间未过期时向所述数据查询请求的请求方返回目标缓存数据,在目标缓存数据的超时时间已过期时延长所述目标缓存数据的超时时间,并在数据库中查找与所述数据查询请求相匹配的目标数据库数据,可以令超时时间已过期但失效时间未过期的目标缓存数据重新可用,并且对该超时时间已过期的目标缓存数据进行数据更新,从而能够使得查询频繁的缓存数据实现长时间持续性地不失效,以避免大量查询同时在查询一个缓存数据且当该缓存数据刚好失效时发生的缓存击穿和查询故障问题,还能够避免缓存失效后查询数据库所需的时间造成请求的等待,从而提高系统响应速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
图2示意性地示出了本申请实施例提供的数据处理方法的步骤流程。
图3示意性地示出了本申请技术方案的数据查询请求的在示例性架构下的示例性处理步骤流程。
图4示意性地示出了本申请实施例中在缓存中查找与数据查询请求相匹配的目标缓存数据的部分步骤流程。
图5示意性地示出了本申请实施例中在缓存中查找与数据查询请求相匹配的目标缓存数据的部分步骤流程。
图6示意性地示出了本申请实施例中延长目标缓存数据的超时时间的步骤流程。
图7示意性地示出了本申请实施例中将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点的步骤流程。
图8示意性地示出了本申请实施例中统计内容触发操作的步骤流程。
图9示意性地示出了本申请实施例中在数据库中查找与数据查询请求相匹配的目标数据库数据之前的步骤流程。
图10示意性地示出了本申请实施例中将当前线程配置为休眠状态之后的步骤流程。
图11示意性地示出了本申请实施例中监测当前线程以确定是否满足当前线程的唤醒条件的步骤流程。
图12示意性地示出了本申请实施例中监测当前线程以确定是否满足当前线程的唤醒条件的步骤流程。
图13示意性地示出了本申请实施例中在数据库中查找与数据查询请求相匹配的目标数据库数据之后的步骤流程。
图14示意性地示出了本申请实施例提供的数据处理系统1400的结构框图。
图15示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
如图1所示,系统架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑、车载设备等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。
根据实现需要,本申请实施例中的系统架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本申请实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本申请对此不做特殊限定。
举例而言,服务器130上可以存储有金融支付协议以供查询,终端设备110可以发起查询请求以对服务器130上的金融支付协议进行查询。当用户委托微信支付平台进行代扣时,到了预设的代扣时间,微信支付平台会发出数据查询请求查询服务器上用户签订的金融支付协议以扣费,当同一时间大量代扣请求产生时,会产生大量数据查询请求以查询服务器上用户签订的金融支付协议,会造成高并发的查询,大量查询同时在查询一个缓存数据,当该缓存数据刚好失效时,会导致大量请求直接访问数据库,对数据库造成冲击,造成数据库和缓存的查询故障问题。为了避免对数据库造成冲击,造成数据库和缓存的查询故障问题,可以在终端设备110或者服务器130执行本申请提供的数据处理方法,通过在目标缓存数据的超时时间未过期时向所述数据查询请求的请求方返回目标缓存数据,在目标缓存数据的超时时间已过期时延长所述目标缓存数据的超时时间,并在数据库中查找与所述数据查询请求相匹配的目标数据库数据以更新缓存,可以令超时时间已过期的但失效时间未过期目标缓存数据重新可用,并且对该超时时间已过期的目标缓存数据进行数据更新,从而能够使得查询频繁的缓存数据实现长时间持续性地不失效,以避免大量查询同时在查询一个缓存数据且当该缓存数据刚好失效时发生的缓存击穿和查询故障问题,能够保证缓存的可用性,并保护数据库,提高业务的稳定性和数据库的可用性,还能够避免缓存失效后查询数据库所需的时间造成请求的等待,从而提高系统响应速度。
服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载设备等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云技术(Cloud technology)是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本发明实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。如本申请所公开的数据处理方法或数据处理系统,其中多个服务器可组成为一区块链,而服务器为区块链上的节点。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
下面结合具体实施方式对本申请提供的数据处理方法做出详细说明。
图2示出了本申请某些实施方式的数据处理方法的步骤流程图,该数据处理方法的执行主体可以是终端设备,也可以是服务器等,本申请对此不设限。如图2所示,该信息处理方法主要可以包括如下步骤S210~步骤S240:
S210.响应于数据查询请求,在缓存中查找与数据查询请求相匹配的目标缓存数据。
将会经常访问的数据复制到靠近应用程序的快速存储中缓存,可以提高系统性能和伸缩性。缓存可以为Memcached,Memcached是一种分布式的高速缓存系统,可以通过缓存数据库以查询数据,减少数据库访问次数,能够提高网页或应用服务器的响应速度。
图3示意性地示出了内容展示主体中内容展示信息被触发展示的可视化效果。如图3所示,请求端可以产生大量的高并发请求,其中包括并发查询请求1和并发查询请求2。并发查询请求1和并发查询请求2对应的是同一个目标缓存数据。缓存响应于该高并发请求中的请求1和请求2在缓存中查找与数据查询请求相匹配的目标缓存数据。
S220.获取目标缓存数据的超时时间,并确定超时时间是否已过期,超时时间小于目标缓存数据的失效时间。
查找到与数据查询请求相匹配的目标缓存数据后获取目标缓存数据的超时时间timeout1,并确定超时时间timeout1是否已过期,超时时间timeout1小于目标缓存数据的失效时间timeout2。超时时间已过期的缓存数据的超时时间戳的所在时刻已经超过当前的系统时间,指示该缓存数据较旧,需要查询数据库以更新。超时时间timeout1已过期但失效时间timeout2未过期的缓存数据还保存在缓存中,该缓存数据可以被读取出来,只是数据较旧。而失效时间timeout2已过期的缓存数据已经不在缓存中存储,无法被读取出来。
具体地,可以获取当前系统时间,并将当前系统时间与超时时间timeout1所在的时刻进行比较,来确定超时时间timeout1是否已过期。若当前系统时间所在时刻位于超时时间timeout1所在的时刻之后,则认为超时时间timeout1已过期。若当前系统时间所在时刻位于超时时间timeout1所在的时刻之前或当前系统时间所在时刻与超时时间timeout1所在的时刻为同一时刻,则认为超时时间timeout1未过期。
同理,可以获取当前系统时间,并将当前系统时间与失效时间Timeout2所在的时刻进行比较,来确定失效时间Timeout2是否已过期。若当前系统时间所在时刻位于失效时间Timeout2所在的时刻之后,则认为失效时间Timeout2已过期。若当前系统时间所在时刻位于失效时间Timeout2所在的时刻之前或当前系统时间所在时刻与失效时间Timeout2所在的时刻为同一时刻,则认为失效时间Timeout2未过期。
S230.若超时时间未过期,则向数据查询请求的请求方返回目标缓存数据。
当超时时间timeout1未过期时,则目标缓存数据仍保存在缓存中并且还无需进行更新,此时则向数据查询请求的请求方直接返回目标缓存数据,系统的响应速度较快。
S240.若超时时间已过期,则延长目标缓存数据的超时时间,并在数据库中查找与数据查询请求相匹配的目标数据库数据。
当超时时间timeout1已过期时,则延长目标缓存数据的超时时间timeout1,并在数据库中查找与数据查询请求相匹配的目标数据库数据,以将该目标数据库数据更新到缓存中成为新的目标缓存数据,并且覆盖或删除原有的超时时间timeout1已过期的目标缓存数据。如图3所示,在缓存中与并发查询服务的数据查询请求1相匹配的目标缓存数据的timeout1已过期,则延长timeout1并将延长后的timeout1作为与数据查询请求1相匹配的目标缓存数据的新的超时时间,从而能够使得在数据查询请求1之后,与请求1携带的查询关键字相同的并发查询服务的请求2到达缓存时,请求2查找缓存数据并获取到该目标缓存数据的超时时间timeout1未过期,timeout2位于timeout1之后因此timeout2也未过期,因而请求2能够直接命中缓存并返回缓存数据,从而能够提升系统的响应速度。
具体例子中,超时时间timeout1可以设置为缓存数据生成之后10分钟的时刻,失效时间timeout2可以设置为缓存数据生成之后20分钟的时刻。当目标缓存数据的超时时间timeout1已过期时,则延长目标缓存数据的超时时间timeout1,例如,将长目标缓存数据的超时时间timeout1从缓存数据生成之后10分钟的时刻延长至缓存数据生成之后15分钟的时刻,此时,延长后的超时时间timeout1仍小于失效时间timeout2,也就是说延长后的超时时间timeout1所在时刻仍位于失效时间timeout2所在时刻之前。
设置超时时间或失效时间的伪代码可以如下所示:
下面结合图4~图11对以上实施例中的部分步骤进行详细说明。
图4示意性地示出了本申请实施例中在缓存中查找与数据查询请求相匹配的目标缓存数据的部分步骤流程。如图4所示,在以上实施例的基础上,步骤S210中的在缓存中查找与数据查询请求相匹配的目标缓存数据,可以进一步包括以下步骤S410~步骤S430:
S410.获取数据查询请求中携带的查询关键字;
S420.在缓存中查找与查询关键字相匹配的目标关键字,并确定目标关键字的失效时间是否已过期;
S430.若目标关键字的失效时间未过期,则将与目标关键字相关联的缓存数据确定为与数据查询请求相匹配的目标缓存数据。
缓存可以以Key(关键字)-Value(值)的形式存储数据。数据查询请求中携带的查询关键字,可以通过该查询关键字在缓存中查找与查询关键字相匹配的目标关键字,并确定目标关键字的失效时间是否已过期。若目标关键字的失效时间未过期,则将与目标关键字相关联的缓存数据确定为与数据查询请求相匹配的目标缓存数据。其中,目标关键字的失效时间可以与对应的目标缓存数据的失效时间一致。例如,目标关键字的失效时间和对应的目标缓存数据的失效时间均为timeout2。
图5示意性地示出了本申请实施例中在缓存中查找与数据查询请求相匹配的目标缓存数据的部分步骤流程。如图5所示,在以上实施例的基础上,步骤S210中的在缓存中查找与数据查询请求相匹配的目标缓存数据,还可以进一步包括以下步骤S510~步骤S530:
S510.若目标关键字的失效时间已过期,则在数据库中查找与目标关键字相关联的数据库数据;
S520.根据查找得到的数据库数据更新与目标关键字相关联的缓存数据;
S530.将更新后的缓存数据确定为与数据查询请求相匹配的目标缓存数据。
若目标关键字的失效时间timeout2已过期,说明在缓存中不再存储中目标关键字对应的目标缓存数据,或者缓存中存储的目标缓存数据已失效,不可用。此时,则在数据库中查找与目标关键字相关联的数据库数据,并根据查找得到的数据库数据更新与目标关键字相关联的缓存数据,进而将更新后的缓存数据确定为与数据查询请求相匹配的目标缓存数据,并将该目标缓存数据返回到发出数据查询请求的请求方。
可以理解,缓存的存储空间有限制,当缓存空间被用满时,为了保证缓存在稳定服务的同时能够有效提升命中率,可以对缓存数据设置失效时间,以便在缓存数据失效时间过期后对该缓存数据进行清理,从而能保证缓存数据准确性的同时清理过期缓存,有利于提高缓存命中率。
图6示意性地示出了本申请实施例中延长目标缓存数据的超时时间的步骤流程。如图6所示,在以上实施例的基础上,步骤S240中的延长目标缓存数据的超时时间,可以进一步包括以下步骤S610~步骤S620:
S610.根据数据查询请求中携带的请求时间戳确定发起数据查询请求的请求时间;
S620.将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点。
可以理解,根据数据查询请求中携带的请求时间戳确定发起数据查询请求的请求时间,并且将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点,可以使得目标缓存时间能在发起数据查询请求之后一段时间内超时时间不过期,该段时间可以为2分钟、3分钟、4分钟、5分钟、6分钟等,在该段时间内,数据查询请求已经足以从数据库中完成查找并将与数据查询请求相匹配的目标数据库数据返回到缓存中,并根据目标数据库数据更新缓存中的目标缓存数据。此时缓存数据的生成时间也随缓存中的目标缓存数据更新而更新,缓存数据的生成时间更新为当前系统时间,与此同时,目标缓存数据的超时时间和失效时间也被重置,例如将目标缓存数据的超时时间重置为缓存数据生成之后10分钟的时刻,将目标缓存数据的失效时间重置为缓存数据生成之后20分钟的时刻。由此,能够保证,在数据查询请求1查询数据库的过程中,目标缓存数据的超时时间不过期,能够直接命中缓存并返回,有利于提高系统响应速度。并且,在数据查询请求1查询数据库完成后能够根据目标数据库数据更新缓存中的目标缓存数据,并且重置目标缓存数据的超时时间和失效时间,有利于提高缓存中的数据的准确性。
图7示意性地示出了本申请实施例中将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点的步骤流程。如图7所示,在以上实施例的基础上,步骤S620中的将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点,还可以进一步包括以下步骤S710~步骤S730:
S710.获取请求时间与目标缓存数据的超时时间之间的时间差;
S720.根据时间差选取位于请求时间和目标缓存数据的失效时间之间的目标时间点;
S730.将目标缓存数据的超时时间延长至目标时间点。
将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点的具体过程可以为,获取数据查询请求的请求时间与目标缓存数据的超时时间之间的时间差,并根据时间差选取位于请求时间和目标缓存数据的失效时间之间的目标时间点。当数据查询请求的请求时间与目标缓存数据的超时时间之间的时间差较大时,将目标时间点选取为较接近于目标缓存数据的失效时间的时间点。
图8示意性地示出了本申请实施例中在数据库中查找与数据查询请求相匹配的目标数据库数据的步骤流程。如图8所示,在以上实施例的基础上,步骤S240中的在数据库中查找与数据查询请求相匹配的目标数据库数据,还可以进一步包括以下步骤S810~步骤S830:
S810.获取数据查询请求中携带的查询关键字;
S820.在数据库中查找与查询关键字相匹配的目标关键字;
S830.将与目标关键字相关联的数据库数据确定为与数据查询请求相匹配的目标数据库数据。
数据库也可以以Key-Value的形式存储数据。数据查询请求中携带有查询关键字,可以通过该查询关键字在数据库中查找与查询关键字相匹配的目标关键字,并在数据库查询过程中将与目标关键字相关联的数据库数据确定为与数据查询请求相匹配的目标数据库数据。数据库和缓存均以Key-Value的形式存储数据,可以方便数据查询,以及方便数据库中的目标数据库数据对缓存数据进行更新。
图9示意性地示出了本申请实施例中在数据库中查找与数据查询请求相匹配的目标数据库数据之前的步骤流程。如图9所示,在以上实施例的基础上,在步骤S240的在数据库中查找与数据查询请求相匹配的目标数据库数据之前,还可以进一步包括以下步骤S910~步骤S930:
S910.通过发起数据查询请求的当前线程发起获取线程锁的加锁请求;
S920.若当前线程加锁失败,则将当前线程配置为休眠状态;
S930.若当前线程加锁成功,则令当前线程保持运行状态。
在数据库中查找与数据查询请求相匹配的目标数据库数据之前,通过发起数据查询请求的当前线程发起获取线程锁的加锁请求,并且令加锁成功的线程保持运行状态,将加锁失败的当前线程配置为休眠状态,可以限制查询数据库的请求数,防止大量请求直接访问数据库,能够避免数据库受到冲击。只有成功获取到线程锁的请求才能查询数据库,其他请求只能进入休眠状态等待。
图10示意性地示出了本申请实施例中将当前线程配置为休眠状态之后的步骤流程。如图10所示,在以上实施例的基础上,在步骤S920的将当前线程配置为休眠状态之后,还可以进一步包括以下步骤S1010~步骤S1020:
S1010.监测当前线程以确定是否满足当前线程的唤醒条件;
S1020.当满足当前线程的唤醒条件时,将当前线程配置为运行状态,以通过当前线程重新发起数据查询请求。
将当前线程配置为休眠状态之后,可以监测当前线程以确定是否满足当前线程的唤醒条件以便再次将线程唤醒。当满足当前线程的唤醒条件时,将当前线程配置为运行状态,以通过当前线程重新发起数据查询请求,从而使得当前线程能够重新发起该数据查询请求以继续完成数据查询。
图11示意性地示出了本申请实施例中监测当前线程以确定是否满足当前线程的唤醒条件的步骤流程。如图11所示,在以上实施例的基础上,步骤S1010中的监测当前线程以确定是否满足当前线程的唤醒条件,可以进一步包括以下步骤S1110~步骤S1130:
S1110.监测当前线程的休眠时间;
S1120.若休眠时间大于或者等于预设的时间阈值,则确定满足当前线程的唤醒条件;
S1130.若休眠时间小于时间阈值,则确定不满足当前线程的唤醒条件。
监测当前线程以确定是否满足当前线程的唤醒条件,具体地,可以监测当前线程的休眠时间。若休眠时间大于或者等于预设的时间阈值,则确定满足当前线程的唤醒条件;若休眠时间小于时间阈值,则确定不满足当前线程的唤醒条件。时间阈值可以为设置为稍大于数据查询请求从数据库中查找并将数据返回更新到缓存中所需时间的长度。例如,当数据查询请求从数据库中查找并将数据返回更新到缓存中所需时间一般为8ms~10ms时,时间阈值可以设置为12ms。休眠时间达到时间阈值之前,进入数据查询请求已经足以从数据库中完成查找并将与数据查询请求相匹配的目标数据库数据返回到缓存中,并根据目标数据库数据更新缓存中的目标缓存数据,并且重置目标缓存数据的超时时间和失效时间。由此,在当前线程的休眠完成并唤醒之后,能够对缓存重新发起该数据查询请求以命中缓存,向该数据查询请求的请求方返回对应的目标缓存数据。
图12示意性地示出了本申请实施例中监测当前线程以确定是否满足当前线程的唤醒条件的步骤流程。如图12所示,在以上实施例的基础上,步骤S1010中的监测当前线程以确定是否满足当前线程的唤醒条件,可以进一步包括以下步骤S1210~步骤S1230:
S1210.监测当前线程请求获取的线程锁的当前状态;
S1220.若线程锁处于释放状态,则确定满足当前线程的唤醒条件;
S1230.若线程锁处于锁定状态,则确定不满足当前线程的唤醒条件。
监测当前线程以确定是否满足当前线程的唤醒条件,具体地,可以监测当前线程请求获取的线程锁的当前状态,若线程锁处于释放状态,则确定满足当前线程的唤醒条件;若线程锁处于锁定状态,则确定不满足当前线程的唤醒条件。可以理解,数据查询请求从数据库中成功取得数据并根据目标数据库数据更新缓存中的目标缓存数据,线程锁才会处于释放状态,此时,确定满足当前线程的唤醒条件,将当前线程唤醒并对缓存重新发起该数据查询请求以命中缓存,向该数据查询请求的请求方返回对应的目标缓存数据。由此,在线程锁处于释放状态时,将当前线程唤醒以对缓存重新发起该数据查询请求命中缓存;在线程锁处于锁定状态,不将当前线程唤醒,当前线程继续休眠等待制造线程所处于释放状态;能够使得线程锁在数据查询请求从数据库中成功取得数据并根据目标数据库数据更新缓存中的目标缓存数据的时机唤醒,从而能够使得休眠线程的等待时间缩减到最短,进而能够提高系统的响应速度。
在某些实施方式中,线程锁可以为互斥锁。互斥锁包括有互斥量(mutex),线程在访问共享资源前对互斥量进行加锁,线程在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为可运行状态的线程可以对互斥量加锁,其他线程将会看到互斥锁依然被锁住,只能回去等待它重新变为可用。在这种方式下,每次只有一个线程可以向前运行查询数据库,从而可以防止大量请求直接访问数据库,能够避免数据库受到高并发请求的冲击,提高系统的稳定性。并且,对于高并发请求,同一时间内只有一个请求能够访问数据库查询数据,并将查询得到的数据更新到缓存中,可以避免多次对数据库的访问,从而能够节省系统资源。
图13示意性地示出了本申请实施例中在数据库中查找与数据查询请求相匹配的目标数据库数据之后的步骤流程。如图13所示,在以上实施例的基础上,在步骤S240的在数据库中查找与数据查询请求相匹配的目标数据库数据之后,还可以进一步包括以下步骤S1310~步骤S1330:
S1310.根据目标数据库数据更新缓存中的目标缓存数据;
S1320.重置目标缓存数据的超时时间和失效时间;
S1330.释放线程锁,并向数据查询请求的请求方返回更新后的目标缓存数据。
在数据库中查找与数据查询请求相匹配的目标数据库数据之后,可以根据目标数据库数据更新缓存中的目标缓存数据,并重置目标缓存数据的超时时间和失效时间,接着释放线程锁,并向数据查询请求的请求方返回更新后的目标缓存数据,实现系统对数据查询请求方的响应。从而能够在数据查询请求每次查询数据库之后,可以将取得的数据库数据更新到缓存中,从而实现对缓存数据的更新。并且,对于访问越频繁的缓存数据,在缓存数据的超时时间过期但失效时间未过期的时间段内被访问的可能性越大,则对于访问频繁的缓存数据,在缓存数据的超时时间过期但失效时间未过期时,更有可能通过对应的目标数据库数据更新缓存中的目标缓存数据,并且重置目标缓存数据的超时时间和失效时间,从而能够在目标缓存数据尚未失效时就对目标缓存数据进行更新并重置失效时间,进而能够防止该访问频繁的目标缓存数据失效,提高系统对携带热点关键字的数据查询请求的响应速度,能够避免系统受到高并发请求的冲击。
相关技术中,为了保护数据库的安全性,即使不会有大量请求同时到达后端数据库,但是在缓存失效的瞬间,大量的请求会因为获取不到互斥锁而睡眠,在获取到线程锁的请求查询数据库结果返回之前,所有查询同一个key的请求都需要等待,只有在等待一段时间过后重试才能读取到数据,客户端得不到及时的响应,从而降低了查询服务的响应速度,使得扣费或者信息获取流程呈现卡顿。而在终端设备110或者服务器130执行本申请提供的数据处理方法,可以令超时时间已过期的但失效时间未过期目标缓存数据重新可用,避免在查询数据库过程中阻塞关键字相同的新的请求,而是使得该新的请求能够直接命中缓存并即时返回数据,并且对该超时时间已过期的目标缓存数据进行数据更新并且重置超时时间和失效时间,从而能够使得查询频繁的缓存数据实现长时间持续性地不失效,实现自动续期,能够保证缓存的持续的可用性,可以提高对缓存的命中率并保护数据库,提高系统业务的稳定性,还能够避免缓存失效后查询数据库所需的时间造成请求的等待,从而提高系统响应速度。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的数据处理方法。图14示意性地示出了本申请实施例提供的数据处理系统1400的结构框图。如图14所示,数据处理系统1400可以包括:
缓存查找模块1410,被配置为响应于数据查询请求,在缓存中查找与数据查询请求相匹配的目标缓存数据;
时间获取模块1420,被配置为获取目标缓存数据的超时时间,并确定超时时间是否已过期,超时时间小于目标缓存数据的失效时间;
第一执行模块1430,被配置为若超时时间未过期,则向数据查询请求的请求方返回目标缓存数据;
第二执行模块1440,被配置为若超时时间已过期,则延长目标缓存数据的超时时间,并在数据库中查找与数据查询请求相匹配的目标数据库数据。
在本申请的一些实施例中,基于以上技术方案,缓存查找模块1410包括:
第一关键字获取单元,被配置为获取数据查询请求中携带的查询关键字;
第一关键字匹配单元,被配置为在缓存中查找与查询关键字相匹配的目标关键字,并确定目标关键字的失效时间是否已过期;
缓存数据查找单元,被配置为若目标关键字的失效时间未过期,则将与目标关键字相关联的缓存数据确定为与数据查询请求相匹配的目标缓存数据。
在本申请的一些实施例中,基于以上技术方案,缓存查找模块1410还包括:
执行单元,被配置为若目标关键字的失效时间已过期,则在数据库中查找与目标关键字相关联的数据库数据;
缓存更新单元,被配置为根据查找得到的数据库数据更新与目标关键字相关联的缓存数据;
目标缓存数据获取单元,被配置为将更新后的缓存数据确定为与数据查询请求相匹配的目标缓存数据。
在本申请的一些实施例中,基于以上技术方案,第二执行模块1440包括:
第一延时单元,被配置为根据数据查询请求中携带的请求时间戳确定发起数据查询请求的请求时间;
第二延时单元,被配置为将目标缓存数据的超时时间延长至位于请求时间和目标缓存数据的失效时间之间的目标时间点。
在本申请的一些实施例中,基于以上技术方案,第二延时单元包括:
时间差获取子单元,被配置为获取请求时间与目标缓存数据的超时时间之间的时间差;
目标时间点选取子单元,被配置为根据时间差选取位于请求时间和目标缓存数据的失效时间之间的目标时间点;
延时子单元,被配置为将目标缓存数据的超时时间延长至目标时间点。
在本申请的一些实施例中,基于以上技术方案,第二执行模块1440还包括:
第二关键字获取单元,被配置为获取数据查询请求中携带的查询关键字;
第二关键字匹配单元,被配置为在数据库中查找与查询关键字相匹配的目标关键字;
数据库数据查找单元,被配置为将与目标关键字相关联的数据库数据确定为与数据查询请求相匹配的目标数据库数据。
在本申请的一些实施例中,基于以上技术方案,第二执行模块1440还包括:
加锁单元,被配置为通过发起数据查询请求的当前线程发起获取线程锁的加锁请求;
休眠单元,被配置为若当前线程加锁失败,则将当前线程配置为休眠状态;
运行单元,被配置为若当前线程加锁成功,则令当前线程保持运行状态。
在本申请的一些实施例中,基于以上技术方案,休眠单元包括:
监测子单元,被配置为监测当前线程以确定是否满足当前线程的唤醒条件;
唤醒子单元,被配置为当满足当前线程的唤醒条件时,将当前线程配置为运行状态,以通过当前线程重新发起数据查询请求。
在本申请的一些实施例中,基于以上技术方案,监测子单元包括:
时间监测子单元,被配置为监测当前线程的休眠时间;
第一执行子单元,被配置为若休眠时间大于或者等于预设的时间阈值,则确定满足当前线程的唤醒条件;
第二执行子单元,被配置为若休眠时间小于时间阈值,则确定不满足当前线程的唤醒条件。
在本申请的一些实施例中,基于以上技术方案,监测子单元包括:
状态监测子单元,被配置为监测当前线程请求获取的线程锁的当前状态;
第三执行子单元,被配置为若线程锁处于释放状态,则确定满足当前线程的唤醒条件;
第四执行子单元,被配置为若线程锁处于锁定状态,则确定不满足当前线程的唤醒条件。
在本申请的一些实施例中,基于以上技术方案,线程锁为互斥锁。
在本申请的一些实施例中,基于以上技术方案,第二执行模块1440还包括:
缓存更新单元,被配置为根据目标数据库数据更新缓存中的目标缓存数据;
时间重置单元,被配置为重置目标缓存数据的超时时间和失效时间;
数据返回单元,被配置为释放线程锁,并向数据查询请求的请求方返回更新后的目标缓存数据。
本申请各实施例中提供的数据处理系统的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图15示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图15示出的电子设备的计算机系统1500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图15所示,计算机系统1500包括中央处理器1501(Central Processing Unit,CPU),其可以根据存储在只读存储器1502(Read-Only Memory,ROM)中的程序或者从存储部分1508加载到随机访问存储器1503(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1503中,还存储有系统操作所需的各种程序和数据。中央处理器1501、在只读存储器1502以及随机访问存储器1503通过总线1504彼此相连。输入/输出接口1505(Input/Output接口,即I/O接口)也连接至总线1504。
以下部件连接至输入/输出接口1505:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至输入/输出接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被中央处理器1501执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (13)

1.一种数据处理方法,其特征在于,包括:
响应于数据查询请求,在缓存中查找与所述数据查询请求相匹配的目标缓存数据;
获取所述目标缓存数据的超时时间,并确定所述超时时间是否已过期,所述超时时间小于所述目标缓存数据的失效时间;
若所述超时时间未过期,则向所述数据查询请求的请求方返回所述目标缓存数据;
若所述超时时间已过期,则通过发起所述数据查询请求的当前线程发起获取线程锁的加锁请求;
若所述当前线程加锁失败,则将所述当前线程配置为休眠状态;
若所述当前线程加锁成功,则令所述当前线程保持运行状态;
延长所述目标缓存数据的超时时间,以便其他数据查询请求能够命中并返回所述目标缓存数据;
在数据库中查找与所述数据查询请求相匹配的目标数据库数据;
根据所述目标数据库数据更新所述缓存中的目标缓存数据;
重置所述目标缓存数据的超时时间和失效时间;
释放所述线程锁,并向所述数据查询请求的请求方返回更新后的目标缓存数据。
2.根据权利要求1所述的数据处理方法,其特征在于,所述在缓存中查找与所述数据查询请求相匹配的目标缓存数据,包括:
获取所述数据查询请求中携带的查询关键字;
在缓存中查找与所述查询关键字相匹配的目标关键字,并确定所述目标关键字的失效时间是否已过期;
若所述目标关键字的失效时间未过期,则将与所述目标关键字相关联的缓存数据确定为与所述数据查询请求相匹配的目标缓存数据。
3.根据权利要求2所述的数据处理方法,其特征在于,所述在缓存中查找与所述数据查询请求相匹配的目标缓存数据,还包括:
若所述目标关键字的失效时间已过期,则在数据库中查找与所述目标关键字相关联的数据库数据;
根据查找得到的数据库数据更新与所述目标关键字相关联的缓存数据;
将更新后的缓存数据确定为与所述数据查询请求相匹配的目标缓存数据。
4.根据权利要求1所述的数据处理方法,其特征在于,所述延长所述目标缓存数据的超时时间,包括:
根据所述数据查询请求中携带的请求时间戳确定发起所述数据查询请求的请求时间;
将所述目标缓存数据的超时时间延长至位于所述请求时间和所述目标缓存数据的失效时间之间的目标时间点。
5.根据权利要求4所述的数据处理方法,其特征在于,所述将所述目标缓存数据的超时时间延长至位于所述请求时间和所述目标缓存数据的失效时间之间的目标时间点,包括:
获取所述请求时间与所述目标缓存数据的超时时间之间的时间差;
根据所述时间差选取位于所述请求时间和所述目标缓存数据的失效时间之间的所述目标时间点;
将所述目标缓存数据的超时时间延长至所述目标时间点。
6.根据权利要求1所述的数据处理方法,其特征在于,所述在数据库中查找与所述数据查询请求相匹配的目标数据库数据,包括:
获取所述数据查询请求中携带的查询关键字;
在数据库中查找与所述查询关键字相匹配的目标关键字;
将与所述目标关键字相关联的数据库数据确定为与所述数据查询请求相匹配的目标数据库数据。
7.根据权利要求1所述的数据处理方法,其特征在于,在将所述当前线程配置为休眠状态之后,所述方法还包括:
监测所述当前线程以确定是否满足所述当前线程的唤醒条件;
当满足所述当前线程的唤醒条件时,将所述当前线程配置为运行状态,以通过所述当前线程重新发起数据查询请求。
8.根据权利要求7所述的数据处理方法,其特征在于,所述监测所述当前线程以确定是否满足所述当前线程的唤醒条件,包括:
监测所述当前线程的休眠时间;
若所述休眠时间大于或者等于预设的时间阈值,则确定满足所述当前线程的唤醒条件;
若所述休眠时间小于所述时间阈值,则确定不满足所述当前线程的唤醒条件。
9.根据权利要求7所述的数据处理方法,其特征在于,所述监测所述当前线程以确定是否满足所述当前线程的唤醒条件,包括:
监测所述当前线程请求获取的线程锁的当前状态;
若所述线程锁处于释放状态,则确定满足所述当前线程的唤醒条件;
若所述线程锁处于锁定状态,则确定不满足所述当前线程的唤醒条件。
10.根据权利要求1所述的数据处理方法,其特征在于,所述线程锁为互斥锁。
11.一种数据处理系统,其特征在于,包括:
缓存查找模块,被配置为响应于数据查询请求,在缓存中查找与所述数据查询请求相匹配的目标缓存数据;
时间获取模块,被配置为获取所述目标缓存数据的超时时间,并确定所述超时时间是否已过期,所述超时时间小于所述目标缓存数据的失效时间;
第一执行模块,被配置为若所述超时时间未过期,则向所述数据查询请求的请求方返回所述目标缓存数据;
第二执行模块,被配置为若所述超时时间已过期,则延长所述目标缓存数据的超时时间,以便其他数据查询请求能够命中并返回所述目标缓存数据,并在数据库中查找与所述数据查询请求相匹配的目标数据库数据;
所述第二执行模块还包括:
加锁单元,被配置为通过发起所述数据查询请求的当前线程发起获取线程锁的加锁请求;
休眠单元,被配置为若所述当前线程加锁失败,则将所述当前线程配置为休眠状态;
运行单元,被配置为若所述当前线程加锁成功,则令所述当前线程保持运行状态;
缓存更新单元,被配置为根据所述目标数据库数据更新所述缓存中的目标缓存数据;
时间重置单元,被配置为重置所述目标缓存数据的超时时间和失效时间;
数据返回单元,被配置为释放所述线程锁,并向所述数据查询请求的请求方返回更新后的目标缓存数据。
12.一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至10中任意一项所述的数据处理方法。
13.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至10中任意一项所述的数据处理方法。
CN202110231346.2A 2021-03-02 2021-03-02 数据处理方法、系统、计算机可读介质及电子设备 Active CN113010552B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110231346.2A CN113010552B (zh) 2021-03-02 2021-03-02 数据处理方法、系统、计算机可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110231346.2A CN113010552B (zh) 2021-03-02 2021-03-02 数据处理方法、系统、计算机可读介质及电子设备

Publications (2)

Publication Number Publication Date
CN113010552A CN113010552A (zh) 2021-06-22
CN113010552B true CN113010552B (zh) 2024-01-30

Family

ID=76402600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110231346.2A Active CN113010552B (zh) 2021-03-02 2021-03-02 数据处理方法、系统、计算机可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN113010552B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760848A (zh) * 2021-08-14 2021-12-07 济南浪潮数据技术有限公司 一种处理审计日志数据的方法、系统、设备和存储介质
CN114143277B (zh) * 2021-10-20 2023-11-24 北京达佳互联信息技术有限公司 数据请求处理方法、装置、电子设备及存储介质
CN114036195A (zh) * 2021-11-11 2022-02-11 深圳乐信软件技术有限公司 一种数据请求处理方法、装置、服务器和存储介质
CN114268558B (zh) * 2021-12-22 2023-06-06 建信金融科技有限责任公司 监控图的生成方法、装置、设备、介质
CN117271597A (zh) * 2022-06-14 2023-12-22 顺丰科技有限公司 基于redis的性能调整方法、装置、电子设备和介质
CN115913646B (zh) * 2022-10-21 2024-06-04 网易(杭州)网络有限公司 黑名单对象的拦截方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959644A (zh) * 2005-10-27 2007-05-09 国际商业机器公司 在数据处理系统中仲裁线程访问共享资源的系统和方法
CN105608115A (zh) * 2015-12-11 2016-05-25 北京奇虎科技有限公司 数据获取方法与装置
CN109491928A (zh) * 2018-11-05 2019-03-19 深圳乐信软件技术有限公司 缓存控制方法、装置、终端及存储介质
CN111813792A (zh) * 2020-06-22 2020-10-23 上海悦易网络信息技术有限公司 一种用于分布式缓存系统中缓存数据更新的方法与设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959644A (zh) * 2005-10-27 2007-05-09 国际商业机器公司 在数据处理系统中仲裁线程访问共享资源的系统和方法
CN105608115A (zh) * 2015-12-11 2016-05-25 北京奇虎科技有限公司 数据获取方法与装置
CN109491928A (zh) * 2018-11-05 2019-03-19 深圳乐信软件技术有限公司 缓存控制方法、装置、终端及存储介质
CN111813792A (zh) * 2020-06-22 2020-10-23 上海悦易网络信息技术有限公司 一种用于分布式缓存系统中缓存数据更新的方法与设备

Also Published As

Publication number Publication date
CN113010552A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
CN113010552B (zh) 数据处理方法、系统、计算机可读介质及电子设备
US11281665B2 (en) Read/write split database query routing
JP6181290B2 (ja) トランザクションの順序付け
US11709841B2 (en) Methods for updating reference count and shared objects in a concurrent system
EP2653986B1 (en) Client-side caching of a database transaction token.
US11847110B2 (en) Method and system for supporting data consistency on an active standby database after DML redirection to a primary database
US20110218971A1 (en) System, Method And Computer Program Product For Managing Caches
CN112883119B (zh) 数据同步方法、装置、计算机设备及计算机可读存储介质
CN111241195B (zh) 分布式系统的数据库处理方法、装置、设备及存储介质
US9910881B1 (en) Maintaining versions of control plane data for a network-based service control plane
WO2019184775A1 (zh) 管理数据的存储方法、设备及存储介质
US8694471B2 (en) System and method for updating a cache using a gating mechanism and events
US20140317359A1 (en) Clustered file system caching
CN112084206A (zh) 数据库的事务请求处理方法、相关设备及存储介质
US20210216523A1 (en) Data Storage Method, Metadata Server, and Client
US9928174B1 (en) Consistent caching
US11822552B2 (en) Methods for updating reference count and shared objects in a concurrent system
CN117591038B (zh) 一种数据访问方法、装置、分布式存储系统及设备和介质
WO2024198872A1 (zh) 数据管理系统、数据更新方法及装置
US11275601B2 (en) System and method for auto recovery of deleted virtual machines identified through comparison of virtual machine management application snapshots and having corresponding backups at a storage device
CN116561137A (zh) 事务处理方法、装置、计算机设备及存储介质
US10642745B2 (en) Key invalidation in cache systems
US20210397581A1 (en) Sparse file system implemented with multiple cloud services
CN115695521B (zh) 一种分布式会话方法及装置
US12007954B1 (en) Selective forwarding for multi-statement database transactions

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40046413

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant