CN117056363A - 数据缓存方法、系统、设备以及存储介质 - Google Patents

数据缓存方法、系统、设备以及存储介质 Download PDF

Info

Publication number
CN117056363A
CN117056363A CN202310893112.3A CN202310893112A CN117056363A CN 117056363 A CN117056363 A CN 117056363A CN 202310893112 A CN202310893112 A CN 202310893112A CN 117056363 A CN117056363 A CN 117056363A
Authority
CN
China
Prior art keywords
data
preset
caching
configuration
cache
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.)
Granted
Application number
CN202310893112.3A
Other languages
English (en)
Other versions
CN117056363B (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.)
Guangzhou Sanqi Jiyao Network Technology Co ltd
Original Assignee
Guangzhou Sanqi Jiyao Network 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 Guangzhou Sanqi Jiyao Network Technology Co ltd filed Critical Guangzhou Sanqi Jiyao Network Technology Co ltd
Priority to CN202310893112.3A priority Critical patent/CN117056363B/zh
Publication of CN117056363A publication Critical patent/CN117056363A/zh
Application granted granted Critical
Publication of CN117056363B publication Critical patent/CN117056363B/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/21Design, administration or maintenance of databases
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据缓存方法、系统、设备以及存储介质,该方法包括:通过响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行缓存;然后,加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存;最后,在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。本方案通过将系统数据划分为业务数据以及配置数据的双向管理,有效应对海量的访问请求,减少缓存异常问题。

Description

数据缓存方法、系统、设备以及存储介质
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据缓存方法、系统、设备以及存储介质。
背景技术
随着互联网的迅速发展,应用程序所需接收的访问量也随之增长,相应的,应用服务器和数据库服务器需要承载更多的计算量,由于服务器资源和数据库所能承载的查询能力都是有限的,需要引入缓存来避免因并发量过高而导致数据库的负载升高,甚至服务中断的问题。
然而,现有的缓存方法没有设置合理的缓存管理机制,面对海量的访问请求,容易出现缓存雪崩、击穿以及穿透等问题。
发明内容
本申请实施例提供了一种数据缓存方法、系统、设备以及存储介质,解决了现有的数据缓存方法方法缺乏合理的缓存管理机制的问题,实现了将系统数据划分为业务数据以及配置数据的双向管理,建立合理的缓存清除以及防御机制,有效应对海量的访问请求,减少缓存异常问题,提高业务数据以及配置数据的缓存稳定性,保障业务功能的正常运行。
第一方面,本申请实施例提供了一种数据缓存方法,该方法包括:
响应于满足预设类型条件的数据请求,在当前缓存数据中查询所述数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对所述数据库的访问结果进行缓存;
加载预设配置文件得到配置数据,将所述配置数据基于预设保护机制进行缓存;
在当前缓存数据的容量达到预设阈值的情况下,从所述当前缓存数据中将标记为预设引用强度的缓存数据进行移除,所述预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。
第二方面,本申请实施例还提供了一种数据缓存装系统,包括:
业务数据缓存模块,配置为响应于满足预设类型条件的数据请求,在当前缓存数据中查询所述数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对所述数据库的访问结果进行缓存;
配置数据缓存模块,配置为加载预设配置文件得到配置数据,将所述配置数据基于预设保护机制进行缓存;
缓存数据清除模块,配置为在当前缓存数据的容量达到预设阈值的情况下,从所述当前缓存数据中将标记为预设引用强度的缓存数据进行移除,所述预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。
第三方面,本申请实施例还提供了一种数据缓存设备,该设备包括:
一个或多个处理器;
存储装置,配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请实施例所述的数据缓存方法。
第四方面,本申请实施例还提供了一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时配置为执行本申请实施例所述的数据缓存方法。
本申请实施例中,通过响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行缓存;然后,加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存;最后,在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。实现了将系统数据划分为业务数据以及配置数据的双向管理,建立合理的缓存清除以及防御机制,有效应对海量的访问请求,减少缓存异常问题,提高业务数据以及配置数据的缓存稳定性,保障业务功能的正常运行。
附图说明
图1为本申请实施例提供的一种数据缓存方法的流程图;
图2为本申请实施例提供的一种查询业务数据缓存情况的方法的流程图;
图3为本申请实施例提供的一种数据库的访问结果的处理方法的流程图;
图4为本申请实施例提供的一种数据库的访问方法的流程图;
图5为本申请实施例提供的另一种数据缓存方法的流程图;
图6为本申请实施例提供的另一种数据缓存方法的流程图;
图7为本申请实施例提供的一种配置数据更新的方法的流程图;
图8为本申请实施例提供的一种数据缓存装系统的结构框图;
图9为本申请实施例提供的一种数据缓存设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请实施例,而非对本申请实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请实施例相关的部分而非全部结构。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例提供的数据缓存方法,用于提供数据分类缓存机制以及缓存清除机制。具体应用场景可以包括:游戏数据管理、应用数据管理等。以游戏数据管理为示例,业务数据可以是玩家数据,配置数据可以是游戏启动时的初始化数据,针对业务数据以及配置数据可以设置不同的缓存策略,对于缓存容量进行监控。前述罗列的几种应用场景仅是示例性和解释性的,在实际应用中,还可以在其他场景下的数据缓存中用到该数据缓存方法,本申请实施例对此不作限定。本申请旨在提供一种数据缓存方法,解决现有的数据缓存方法缺乏合理的缓存管理机制的问题。
本申请实施例提供的数据缓存方法,各步骤的执行主体可以是计算机设备,该计算机设备是指任何具备数据计算、处理和存储能力的电子设备,如手机、PC(PersonalComputer,个人计算机)、平板电脑等终端设备,也可以是服务器等设备,本申请实施例对此不作限定。
图1为本申请实施例提供的一种数据缓存方法的流程图,该数据缓存方法可以以数据缓存系统为执行主体实现。如图1所示,该数据缓存方法具体包括如下步骤:
步骤S101、响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行数据缓存。
其中,对于执行本申请实施例的数据缓存方法的计算机设备而言,可以与数据库通讯进行数据传输,对于在线游戏、在线应用等应用场景,会面临海量用户的访问数据的加载与处理,因而需要将必要的用户数据进行缓存来平衡数据库的访问压力,保障用户流畅的操作体验,由于计算机设备的缓存空间有限,若缓存数据占用内存过大,容易出现内存泄露,同时导致计算机设备的启动运行缓慢。此外,若缓存数据过少,则需要对数据库进行频繁访问,尤其是同一时间的海量访问会给数据库造成一定的压力,会导致数据传输的明显延迟。由此,可以基于对数据请求基于不同类型条件来划分,对于满足预设类型条件的可以数据请求可以考虑进行对应的数据缓存,其中,预设类型条件可以是基于用户的活跃程度、用户的重要等级等设置。以在线游戏的应用场景为例,由于活跃用户的占比较低,同时考虑到优先保障活跃用户的流畅体验,可以将预设类型条件设置为数据请求来自于预设活跃度的用户,预设活跃度可以是基于用户登录时长、登录次数等统计数据来进行设置。对于达到预设活跃度的活跃用户而言,在服务器启动后,可以响应于该预设类型条件的数据请求,在当前缓存数据中进行数据查询,具体的,对于首次登录的活跃用户而言,通常业务数据需要从数据库进行获取,因而在查询结果为空的情况下,可以将访问数据库得到的业务数据进行缓存,那么后续重复登录的活跃用户可以直接从缓存数据中读取业务数据,无需对数据库进行访问,有效缓解数据库的访问压力。
在一个实施例中,图2为本申请实施例提供的一种查询业务数据缓存情况的方法的流程图,如图2所示,具体的实施过程包括:
步骤S1011、响应于满足预设类型条件的数据请求。
步骤S1012、在记录的空值集合中存在对应于空值的请求与数据请求相同的情况下,返回空值结果。
其中,空值集合可以是对于不存在对应业务数据的数据请求的集合,以在线游戏的应用场景为例,空值集合可以是因在线活动注销、用户数据变更等导致存在数据请求对应的业务数据不存在的情况,通过记录空值集合的方式,可以在接收到与空值集合中元素相同的数据请求时,直接返回空值结果,无需后续的缓存数据查询或者数据库访问动作,可以有效减少在高并发场景下引起的对于空值数据的不必要查询,缓解数据库访问压力,提高服务器的运行效率。当然,还可以通过设置布隆过滤器等其他方式来对数据请求进行筛选过滤,在此本申请不作限制。
步骤S1013、在记录的空值集合中不存在对应于空值的请求与数据请求相同的情况下,在当前缓存数据中查询与数据请求对应的业务数据。
由此,在数据请求没有命中空值集合的情况下,说明需要进一步通过查询确认数据请求对应的业务数据是否存在。通过空值集合对数据请求进行提前的过滤筛选,可以有效减少因过多无效访问导致缓存穿透的异常问题,维持数据库的稳定性。
可选的,图3为本申请实施例提供的一种数据库的访问结果的处理方法的流程图,如图3所示,在图2的实施例的基础上,基于对数据库的访问结果进行缓存的具体的实施过程包括:
步骤S1014、在查询结果为空的情况下,访问数据库。
步骤S1015、在访问结果为空的情况下,将对应于空值的数据请求添加至空值集合。
其中,与前述实施例中的空值集合相对应,在访问结果为空的情况下,说明该数据请求对应的业务数据为空,为了避免后续对于该不存在的业务数据的反复请求,可以将该数据请求记录到空值集合中,方便接收到新的数据请求的时候可以进行筛选过滤,减少对于数据库的不必要的访问。
步骤S1016、在访问结果为有效数据的情况下,将访问结果对应的业务数据进行缓存。
其中,访问结果为有效数据,说明该数据请求对应的业务数据不为空,可以进一步将该数据请求的业务数据进行缓存,由此,在下一次接收到同样的数据请求的时候,无需再去访问数据库,有利于缓解数据库的访问压力。
在一个实施例中,图4为本申请实施例提供的一种数据库的访问方法的流程图,如图4所示,由于服务器中的热点缓存数据可能会因为设置的存活时间到达导致失效,而在某一时刻存在大量请求获取该热点缓存数据的数据请求,在该部分请求于当前缓存数据的查询结果为空的情况下,可能会引发大量指向数据库的访问,造成数据库瞬时超载,导致数据库崩溃。基于此,本申请实施例引入互斥锁的方式来进行数据库的访问以及数据缓存,例如基于setnx、get等命令的分布式锁。具体的实施过程包括:
步骤S1017、在查询结果为空的情况下;
步骤S1018、在数据请求对应的线程处于持有互斥锁的状态的情况下,访问数据库;
步骤S1019、基于对数据库的访问结果进行缓存,并基于数据请求对应的线程释放互斥锁。
其中,可以理解的是,满足该数据请求对应的线程处于持有互斥锁的状态的情况下,可以允许基于该数据请求去访问数据库,由此可以确保当存在多个并发数据请求需要去访问数据库的时候,只有持有互斥锁的数据请求可以去查询数据库,而其他没有获取到互斥锁的数据请求只能处于阻塞等待状态,直到完成持有互斥锁的数据请求的数据库访问,并将对应的业务数据缓存后,基于该数据请求对应的线程释放互斥锁,那么其他数据请求可以通过获取互斥锁的方式来继续请求访问数据库并获取需要缓存的业务数据。
由此,通过引入互斥锁的方式,有效应对大量数据请求对于数据库的并发访问,减少因数据库过载引起的缓存击穿问题。
步骤S102、通过加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存。
其中,预设配置文件可以是对于数据库的连接信息的配置,对服务器启动端口的配置,以游戏的应用场景为例,还可以是物品信息、技能信息等的配置。由于配置文件的数量可能达到一定的数量规模,并且配置数据属于不可变数据源,那么对于加载后的配置文件的配置数据进行缓存是十分必要的,可以有效提高服务器的响应速度。对于配置数据的缓存,由于相同业务对应的配置数据通常是一样的,因而配置数据在不同用户之间是可以共享的,但是为了避免因个别用户的操作,导致配置数据出现异常变更,可以通过预设保护机制来对配置数据进行缓存,预设保护机制可以是用于保证配置数据的不变性,例如,配置实体类的属性通过反射注入并不主动声明set方法,或采用枚举实例,或初始化集合数据时将对应的集合包装为具有不可变性的集合类型等。
由此,对具备不可变性的配置数据进行缓存,有利于减轻服务器的数据加载压力,优化服务器的反应速度,同时,基于预设保护机制对配置数据进行缓存,可以有效对配置数据形成保护。
可选的,为了确保配置数据的共享性,便于配置数据的管理,可以对每个预设配置文件对应的配置数据设置存储标识,该存储标识可以是对应的配置数据的唯一标识,并对应于每个存储标识基于预设保护机制缓存对应的配置数据。例如,可以选择JDK中Map和ArrayList来缓存配置数据,两个缓存类底层应用了数组的数据结构,数据检索速度快,在服务器启动的时候可以触发配置文件的加载,并缓存起来,比如,Map中的key为配置数据的唯一的存储标识,而value则为对应的配置数据的具体数据。
在一个实施例中,图5为本申请实施例提供的另一种数据缓存方法的流程图,由于同一业务可能对应一定数量的配置文件,为了提高业务模块读取配置文件的准确性和低延迟,如图5所示,预设配置文件包括多个配置文件,加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存的具体实施过程包括:
步骤S1021、每个配置文件加载后得到的配置数据存储至临时存储空间,直至预设配置文件加载完成后,将临时存储空间中预设配置文件对应的配置数据基于预设保护机制进行缓存。
可以理解的是,通过将预设配置文件对应的多个配置文件加载所得的配置数据存储到临时存储空间,并等待预设配置文件加载完成后统一将对应的配置数据进行缓存,可以有利于保障业务配置的完整性。
步骤S103、在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。
其中,在对于业务数据以及配置数据进行缓存后,当前缓存数据的容量可能会在某个时间节点达到预设阈值,需要进行缓存清除来达到缓存释放的目的,减少服务器的缓存压力。预设引用强度可以是在数据缓存过程中基于缓存数据之间的引用程度进行的标记,其中由于缓存数据之间可能互相存在引用关系,一个对象可以同时被多个对象引用,因而对象被指向的其它对象越多,表征引用程度越强,可以使用引用强度来衡量一个对象在程序中的活跃度和可达性。例如,当一个对象没有任何引用指向它时,它就变得不可达,这意味着在程序中无法通过任何路径访问到该对象。在这种情况下,垃圾回收器可以判定该对象为垃圾,并将其所占用的内存空间进行回收,以便后续重用。具体的,可以分别设置引用强度为强引用,软引用以及弱引用,对于强引用的缓存数据而言,即使当前缓存数据的容量达到预设阈值,也不能清除该缓存数据,对于软引用的缓存数据而言,可以设置不同档位的预设阈值,在当前缓存数据的容量达到表征明显内存不足的预设阈值的时候,可以选择清除该缓存数据,对于弱引用的缓存数据而言,在每次当前缓存数据的容量达到预设阈值时,需要对其进行清除回收。
可选的,在数据缓存的过程中,可以基于当前缓存数据的不同引用程度,将当前缓存数据划分为对应于不同引用强度的缓存数据,引用强度的强弱表征缓存数据被引用程度的强弱。
由此,通过设置引用清除的方式,在内存空间不足时及时移除缓存数据,释放内存空间,可以有效缓解服务器的内存压力,提高缓存数据的利用效率。
在一个实施例中,除了前述实施例中提到的设置互斥锁的方式来应对并发的数据请求之外,还可以对于缓存数据的失效时间进行调整来避免因同一时间存在大量缓存同时失效而引起的并发请求。图6为本申请实施例提供的另一种数据缓存方法的流程图,如图6所示,当前缓存数据包括多个缓存子数据;
步骤S201、响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行缓存;
步骤S202、加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存;
步骤S203、在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记;
步骤S204、对每个缓存子数据的失效时间增加预设随机值得到更新失效时间,将更新失效时间作为每个缓存子数据的当前失效时间。
其中,每个缓存子数据可以以用户、具体业务类型等为单位划分,失效时间可以是缓存子数据的预设清理时间,预设随机值可以是通过随机数生成器生成的时间叠加值,由此,对于对应于同一失效时间的缓存子数据,可以通过预设随机值对不同缓存子数据进行不同幅度的失效时间调整,有效规避同一时间的缓存集体失效现象,减少因数据库访问过载而导致系统崩溃的缓存雪崩问题。
在一个实施例中,由于业务的迭代更新,预设配置文件可能存在频繁更新的情况,例如活动投放、功能模块的开启条件调整、外显的投放等操作。因此,需要重新对更新后的预设配置文件进行加载,并对已缓存的配置数据进行更新。基于此,图7为本申请实施例提供的一种配置数据更新的方法的流程图,如图7所示,在前述实施例的基础上引入配置数据更新的具体实施过程,具体包括:
步骤S301、响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行缓存;
步骤S302、加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存;
步骤S303、在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记;
步骤S304、监听预设配置文件的当前修改时间,在当前修改时间与记录的历史修改时间不匹配的情况下,重新加载预设配置文件;
步骤S305、基于加载结果更新配置数据,并更新预设配置文件的历史修改时间。
可以理解的是,每次预设配置文件发生修改后,可以将其修改时间记录为历史修改时间,并开启指定线程对于预设配置文件的当前修改时间进行监听。当预设配置文件的当前修改时间与记录的历史修改时间不匹配时,说明预设配置文件发生了修改,需要对配置数据进行更新,因此需要重新加载预设配置文件,并基于加载结果对配置数据进行更新,同步更新预设配置文件的历史修改时间。由此,可以及时响应于预设配置文件的修改动作,对配置数据进行更新,保障配置数据的时效性。
可选的,在预设配置文件的频繁加载过程中,可能存在加载失败的情况,由此需要设置相应的应对机制来保障配置数据更新的成功率,具体的实施过程可以包括;
在配置数据为空的情况下,重新加载预设配置文件,并在配置文件对应的配置等级为预设重要等级的情况下,启动告警机制。
其中,配置数据为空说明预设配置文件加载失败,可以对该配置文件进行重新加载,一定程度上排除加载过程的偶发异常。预设重要等级可以是表示预设配置文件在相关业务中的重要程度,加载失败的话对于业务的正常开展会有严重的影响,由此,可以加入告警机制,在必要时提出人工介入处理,通过告警的方式第一时间反馈到相关人员,最大程度上保证配置数据更新的成功性。
图8为本申请实施例提供的一种数据缓存装系统的结构框图,该系统配置为执行上述实施例提供的数据缓存方法,具备执行方法相应的功能模块和有益效果。如图8所示,该系统具体包括:
业务数据缓存模块101,配置为响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行缓存;
配置数据缓存模块102,配置为加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存;
缓存数据清除模块103,配置为在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。
上述,通过响应于满足预设类型条件的数据请求,在当前缓存数据中查询数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对数据库的访问结果进行缓存;然后,加载预设配置文件得到配置数据,将配置数据基于预设保护机制进行缓存;最后,在当前缓存数据的容量达到预设阈值的情况下,从当前缓存数据中将标记为预设引用强度的缓存数据进行移除,预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。实现了将系统数据划分为业务数据以及配置数据的双向管理,建立合理的缓存清除以及防御机制,有效应对海量的访问请求,减少缓存异常问题,提高业务数据以及配置数据的缓存稳定性,保障业务功能的正常运行。
在一个可能的实施例中,业务数据缓存模块101,配置为:
在记录的空值集合中存在对应于空值的请求与数据请求相同的情况下,返回空值结果;
在记录的空值集合中不存在对应于空值的请求与数据请求相同的情况下,在当前缓存数据中查询与数据请求对应的业务数据。
在一个可能的实施例中,业务数据缓存模块101,配置为:
在访问结果为空的情况下,将对应于空值的数据请求添加至空值集合;
在访问结果为有效数据的情况下,将访问结果对应的业务数据进行缓存。
在一个可能的实施例中,业务数据缓存模块101,配置为:
在数据请求对应的线程处于持有互斥锁的状态的情况下,访问数据库;
在基于对数据库的访问结果进行数据缓存时,还包括:
基于数据请求对应的线程释放互斥锁。
在一个可能的实施例中,当前缓存数据包括多个缓存子数据;
还包括失效时间调整模块,配置为:
对每个缓存子数据的失效时间增加预设随机值得到更新失效时间,将更新失效时间作为每个缓存子数据的当前失效时间。
在一个可能的实施例中,配置数据缓存模块102,配置为:
对每个预设配置文件对应的配置数据设置存储标识,并对应于每个存储标识基于预设保护机制缓存对应的配置数据。
在一个可能的实施例中,预设配置文件包括多个配置文件;
配置数据缓存模块102,配置为:
将每个配置文件加载后得到的配置数据存储至临时存储空间,直至预设配置文件加载完成后,将临时存储空间中预设配置文件对应的配置数据基于预设保护机制进行缓存。
在一个可能的实施例中,还包括配置数据更新模块,配置为:
监听预设配置文件的当前修改时间,在当前修改时间与记录的历史修改时间不匹配的情况下,重新加载预设配置文件;
基于加载结果更新配置数据,并更新预设配置文件的历史修改时间。
在一个可能的实施例中,还包括配置异常处理模块,配置为:
在配置数据为空的情况下,重新加载预设配置文件,并在配置文件对应的配置等级为预设重要等级的情况下,启动告警机制。
在一个可能的实施例中,还包括引用强度设置模块,配置为:
基于当前缓存数据的不同引用程度,将当前缓存数据划分为对应于不同引用强度的缓存数据,引用强度的强弱表征缓存数据被引用程度的强弱。
图9为本申请实施例提供的一种数据缓存设备的结构示意图,如图9所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图9中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图9中以通过总线连接为例。存储器202作为一种计算机可读存储介质,可配置为存储软件程序、计算机可执行程序以及模块,如本申请实施例中的数据缓存方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据缓存方法。输入装置203可配置为接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。
上述提供的数据缓存设备可用于执行上述任一实施例提供的数据缓存方法,具备相应的功能和有益效果。
本申请实施例还提供一种包含计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时配置为执行一种上述实施例描述的数据缓存方法,其中,包括:
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的数据缓存方法,还可以执行本申请任意实施例所提供的数据缓存方法中的相关操作。
值得注意的是,上述数据缓存装系统的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不配置为限制本申请实施例的保护范围。
需要说明的是,本方案中对各步骤的编号仅用于描述本方案的整体设计框架,不表示步骤之间的必然先后关系。在整体实现过程符合本方案整体设计框架的基础上,均属于本方案的保护范围,描述时文字形式上的先后顺序不是对本方案具体实现过程的排他限定。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (13)

1.数据缓存方法,其特征在于,包括:
响应于满足预设类型条件的数据请求,在当前缓存数据中查询所述数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对所述数据库的访问结果进行缓存;
加载预设配置文件得到配置数据,将所述配置数据基于预设保护机制进行缓存;
在当前缓存数据的容量达到预设阈值的情况下,从所述当前缓存数据中将标记为预设引用强度的缓存数据进行移除,所述预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。
2.根据权利要求1所述的数据缓存方法,其特征在于,所述在当前缓存数据中查询所述数据请求对应的业务数据,包括:
在记录的空值集合中存在对应于空值的请求与所述数据请求相同的情况下,返回空值结果;
在记录的空值集合中不存在对应于空值的请求与所述数据请求相同的情况下,在当前缓存数据中查询与所述数据请求对应的业务数据。
3.根据权利要求2所述的数据缓存方法,其特征在于,所述基于对所述数据库的访问结果进行数据缓存,包括:
在访问结果为空的情况下,将对应于空值的数据请求添加至所述空值集合;
在访问结果为有效数据的情况下,将所述访问结果对应的业务数据进行缓存。
4.根据权利要求1所述的数据缓存方法,其特征在于,所述访问数据库,包括:
在所述数据请求对应的线程处于持有互斥锁的状态的情况下,访问数据库;
在所述基于对所述数据库的访问结果进行数据缓存时,还包括:
基于所述数据请求对应的线程释放所述互斥锁。
5.根据权利要求1所述的数据缓存方法,其特征在于,所述当前缓存数据包括多个缓存子数据;
所述数据缓存方法还包括:
对每个所述缓存子数据的失效时间增加预设随机值得到更新失效时间,将所述更新失效时间作为每个所述缓存子数据的当前失效时间。
6.根据权利要求1所述的数据缓存方法,其特征在于,所述将所述配置数据基于预设保护机制进行缓存,包括:
对每个所述预设配置文件对应的配置数据设置存储标识,并对应于每个所述存储标识基于预设保护机制缓存对应的配置数据。
7.根据权利要求1所述的数据缓存方法,其特征在于,所述预设配置文件包括多个配置文件;
所述加载预设配置文件得到配置数据,将所述配置数据基于预设保护机制进行缓存,包括:
将每个所述配置文件加载后得到的配置数据存储至临时存储空间,直至所述预设配置文件加载完成后,将临时存储空间中所述预设配置文件对应的配置数据基于预设保护机制进行缓存。
8.根据权利要求1所述的数据缓存方法,其特征在于,所述数据缓存方法还包括:
监听所述预设配置文件的当前修改时间,在所述当前修改时间与记录的历史修改时间不匹配的情况下,重新加载所述预设配置文件;
基于加载结果更新所述配置数据,并更新所述预设配置文件的历史修改时间。
9.根据权利要求1所述的数据缓存方法,其特征在于,所述数据缓存方法还包括:
在所述配置数据为空的情况下,重新加载所述预设配置文件,并在所述配置文件对应的配置等级为预设重要等级的情况下,启动告警机制。
10.根据权利要求1所述的数据缓存方法,其特征在于,所述数据缓存方法还包括:
基于当前缓存数据的不同引用程度,将所述当前缓存数据划分为对应于不同引用强度的缓存数据,所述引用强度的强弱表征缓存数据被引用程度的强弱。
11.数据缓存系统,其特征在于,包括:
业务数据缓存模块,配置为响应于满足预设类型条件的数据请求,在当前缓存数据中查询所述数据请求对应的业务数据,在查询结果为空的情况下,访问数据库,并基于对所述数据库的访问结果进行缓存;
配置数据缓存模块,配置为加载预设配置文件得到配置数据,将所述配置数据基于预设保护机制进行缓存;
缓存数据清除模块,配置为在当前缓存数据的容量达到预设阈值的情况下,从所述当前缓存数据中将标记为预设引用强度的缓存数据进行移除,所述预设引用强度为在数据缓存过程中基于缓存数据之间的引用程度进行的标记。
12.一种数据缓存设备,所述设备包括:一个或多个处理器;存储装置,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现权利要求1-10中任一项所述的数据缓存方法。
13.一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时配置为执行权利要求1-10中任一项所述的数据缓存方法。
CN202310893112.3A 2023-07-19 2023-07-19 数据缓存方法、系统、设备以及存储介质 Active CN117056363B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310893112.3A CN117056363B (zh) 2023-07-19 2023-07-19 数据缓存方法、系统、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310893112.3A CN117056363B (zh) 2023-07-19 2023-07-19 数据缓存方法、系统、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN117056363A true CN117056363A (zh) 2023-11-14
CN117056363B CN117056363B (zh) 2024-03-19

Family

ID=88659838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310893112.3A Active CN117056363B (zh) 2023-07-19 2023-07-19 数据缓存方法、系统、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN117056363B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918382A (zh) * 2019-03-18 2019-06-21 Oppo广东移动通信有限公司 数据处理方法、装置、终端及存储介质
CN110765138A (zh) * 2019-10-31 2020-02-07 北京达佳互联信息技术有限公司 数据查询方法、装置、服务器及存储介质
CN111367672A (zh) * 2020-03-05 2020-07-03 北京奇艺世纪科技有限公司 数据缓存方法、装置、电子设备及计算机存储介质
CN111368006A (zh) * 2020-03-31 2020-07-03 中国工商银行股份有限公司 海量数据带条件集中抽取系统及方法
CN112100092A (zh) * 2019-06-18 2020-12-18 北京京东尚科信息技术有限公司 一种信息缓存方法、装置、设备及介质
WO2021169540A1 (zh) * 2020-02-27 2021-09-02 郑州阿帕斯数云信息科技有限公司 数据缓存方法、装置及云服务器
CN113886062A (zh) * 2021-08-29 2022-01-04 苏州浪潮智能科技有限公司 一种缓存管理方法、系统、存储介质及设备
CN115344606A (zh) * 2022-07-21 2022-11-15 北京中科江南信息技术股份有限公司 基于二级缓存的数据查询方法、系统、服务器及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918382A (zh) * 2019-03-18 2019-06-21 Oppo广东移动通信有限公司 数据处理方法、装置、终端及存储介质
CN112100092A (zh) * 2019-06-18 2020-12-18 北京京东尚科信息技术有限公司 一种信息缓存方法、装置、设备及介质
CN110765138A (zh) * 2019-10-31 2020-02-07 北京达佳互联信息技术有限公司 数据查询方法、装置、服务器及存储介质
WO2021169540A1 (zh) * 2020-02-27 2021-09-02 郑州阿帕斯数云信息科技有限公司 数据缓存方法、装置及云服务器
CN111367672A (zh) * 2020-03-05 2020-07-03 北京奇艺世纪科技有限公司 数据缓存方法、装置、电子设备及计算机存储介质
CN111368006A (zh) * 2020-03-31 2020-07-03 中国工商银行股份有限公司 海量数据带条件集中抽取系统及方法
CN113886062A (zh) * 2021-08-29 2022-01-04 苏州浪潮智能科技有限公司 一种缓存管理方法、系统、存储介质及设备
CN115344606A (zh) * 2022-07-21 2022-11-15 北京中科江南信息技术股份有限公司 基于二级缓存的数据查询方法、系统、服务器及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
段春梅;: "云计算分布式缓存技术在海量数据处理平台中的应用", 智能计算机与应用, no. 01, pages 17 - 19 *

Also Published As

Publication number Publication date
CN117056363B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
US10901619B2 (en) Selecting pages implementing leaf nodes and internal nodes of a data set index for reuse
CN104462225B (zh) 一种数据读取的方法、装置及系统
CN110555001B (zh) 数据处理方法、装置、终端及介质
EP2541423B1 (en) Replacement policy for resource container
GB2533116A (en) Query dispatching system and method
EP2919120B1 (en) Memory monitoring method and related device
JP3611295B2 (ja) コンピュータシステム、メモリ管理方法及び記憶媒体
CN104573112A (zh) Oltp集群数据库中页面查询方法及数据处理节点
US9727465B2 (en) Self-disabling working set cache
CN111737168A (zh) 一种缓存系统、缓存处理方法、装置、设备及介质
US20230305724A1 (en) Data management method and apparatus, computer device, and storage medium
CN116450966A (zh) 缓存访问方法及装置、设备、存储介质
CN110569112B (zh) 日志数据写入方法及对象存储守护装置
US20140082293A1 (en) Store Buffer for Transactional Memory
CN110162395B (zh) 一种内存分配的方法及装置
CN111694806B (zh) 一种事务日志的缓存方法、装置、设备和存储介质
CN117056363B (zh) 数据缓存方法、系统、设备以及存储介质
CN116976440A (zh) 模型推理方法、装置、计算机设备、存储介质和产品
CN113849317B (zh) 一种内存池资源使用方法及相关装置
CN109492020A (zh) 一种数据缓存方法、装置、电子设备及存储介质
CN115509741A (zh) 一种内存管理系统、越界检测方法及存储介质
CN113590637A (zh) 一种多进程共享数据库表更新方法及装置、数据库系统
CN110716923B (zh) 数据处理方法、装置、节点设备及存储介质
KR20210058613A (ko) 단일 파일의 병렬 읽기/쓰기를 위한 락킹 방법 및 이를 구현하는 컴퓨팅 장치
CN102508844B (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