CN107958018A - 缓存中的数据更新方法、装置及计算机可读介质 - Google Patents
缓存中的数据更新方法、装置及计算机可读介质 Download PDFInfo
- Publication number
- CN107958018A CN107958018A CN201710966855.3A CN201710966855A CN107958018A CN 107958018 A CN107958018 A CN 107958018A CN 201710966855 A CN201710966855 A CN 201710966855A CN 107958018 A CN107958018 A CN 107958018A
- Authority
- CN
- China
- Prior art keywords
- data
- caching
- memory module
- update
- task
- 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
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种缓存中的数据更新方法、装置及计算机可读介质。其中所述方法包括:根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;若需要,生成更新数据的任务;启动线程池中的线程与数据对应的子服务通信,执行更新数据的任务,实现根据子服务中的数据更新缓存的存储模块中对应的数据。本发明的技术方案,能够很好地兼容缓存中的数据时效性和***性能的问题。
Description
【技术领域】
本发明涉及计算机应用技术领域,尤其涉及一种缓存中的数据更新方法、装置及计算机可读介质。
【背景技术】
缓存是软件***中不可缺少的组件。传统的软件***中,数据缓存层对数据库做缓存,以减少对数据库的访问,提升***性能。
例如,图1为现有技术中常用的一种互联网微服务***架构图。如图1所示,一个数据请求服务不仅仅用于查询数据库,更多的是远程服务调用,如图1中,该服务可以分别调用远程的子服务1、子服务2和子服务3,获取对应的子服务的数据。远程服务调用在性能上远远低于本地数据库的调用,在稳定性上更是不能望其项背。因此,数据缓存对微服务架构提升性能尤其重要。图2为现有技术中常用的另一种互联网微服务***架构图。图2所述的***架构,在图1的基础上增加了数据的缓存层。若服务首次向子服务1、子服务2和子服务3中的任意一个或者多个请求数据时,可以将获取的数据存储在缓存中,同时设置缓存中该数据的有效时间长度,以便于在缓存中该数据的有效期内、上层服务再次请求该数据时,可以直接根据缓存层中存储的该数据作出响应。该数据缓存层的优势在于:对服务的上层调用结果做缓存,加快服务响应速度;减少了对底层依赖的调用次数,减轻了底层服务的压力;缓存的数据可以用于服务降级,在底层服务不可用时仍然不影响主服务。但是该数据缓存层的缺点在于缓存的数据具有一定的时效性。由于子服务的业务可能会更改自己的数据,但这些数据不一定会同步到缓存中。如果这些数据对主服务的业务非常重要,缓存中的数据的时效性问题可能会造成***难以发现的bug。
基于以上所述,若要保证缓存中的数据的时效性,则应缩短缓存中的数据的生命周期;若要提升***性能,降低底层服务的压力,则应延长缓存中的数据生命周期。因此,亟需提供一种既能保证缓存中的数据时效性问题,又能保证***性能的数据更新方案。
【发明内容】
本发明提供了一种缓存中的数据更新方法、装置及计算机可读介质,用于提供一种能够兼容缓存中的数据时效性问题和证***性能的数据更新方案。
本发明提供一种缓存中的数据更新方法,所述方法包括:
根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;
若需要,生成更新所述数据的任务;
启动线程池中的线程与所述数据对应的子服务通信,执行更新所述数据的任务,实现根据所述子服务中的数据更新所述缓存的所述存储模块中对应的所述数据。
进一步可选地,如上所述的方法中,生成更新所述数据的任务之后,所述方法还包括:
将更新所述数据的任务存储在队列中;
进一步地,启动线程池中的线程与所述数据对应的子服务通信,执行更新所述数据的任务,实现根据所述子服务中的数据更新所述缓存的所述存储模块中对应的所述数据,具体包括:
启动所述线程池中的线程,控制所述线程从所述队列中获取所述任务,并与所述数据对应的子服务通信执行所述任务;
获取执行所述任务的所述线程返回的更新后的所述数据;
将更新后的所述数据存储在所述缓存的所述存储模块中。
进一步可选地,如上所述的方法中,若所述存储模块中同时符合所述数据更新策略数据有多个时,将更新所述数据的任务存储在队列中,具体包括:
获取各所述数据对应的子服务标识;
将更新各所述数据的任务依次存储在对应的子服务标识对应的所述队列中;
进一步地,启动所述线程池中的线程,控制所述线程从所述队列中获取所述任务,并与所述数据对应的子服务通信执行所述任务,具体包括:
启动所述线程池中的多个线程,控制各所述线程从各所述子服务标识对应的所述队列中依次获取所述任务,并与所述数据对应的子服务通信执行获取的所述任务。
进一步可选地,如上所述的方法中,若所述数据更新策略包括若发现主服务请求的查询结果中包括敏感数据时,更新所述缓存的所述存储模块中的所述敏感数据;根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据,具体包括:
接收主服务的数据查询;
根据所述数据查询从所述缓存的所述存储模块中获取所述数据查询对应的查询结果;
根据所述数据更新策略,判断所述查询结果的数据中是否包括敏感数据;所述敏感数据为出现概率低、但会影响用户操作和主程序逻辑的数据;
若包括,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
进一步可选地,如上所述的方法中,判断所述查询结果中是否包括敏感数据之前,所述方法还包括:
将所述缓存的所述存储模块中存储的所有数据分为三类:所述敏感数据、易变数据和不易变数据;所述易变数据为容易发生变化、但不会影响用户和主流程的数据;所述不易变数据为不容易发生变化的数据。
进一步可选地,如上所述的方法中,根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据,具体包括:
根据所述数据更新策略,检测所述缓存的所述存储模块中存储的各所述数据的存储时长是否达到对应的变化时长阈值;其中各所述数据的所述变化时长阈值相同或者不同;
若达到,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
进一步可选地,如上所述的方法中,根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据,具体包括:
根据所述数据更新策略,检测当前时刻是否为更新所述缓存的所述存储模块中存储的数据的预设时刻,若是,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
本发明提供一种缓存中的数据更新装置,所述装置包括:
确定模块,用于根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;
生成模块,用于若所述确定模块确定需要更新缓存的存储模块中存储的数据时,生成更新所述数据的任务;
更新执行模块,用于启动线程池中的线程与所述数据对应的子服务通信,执行更新所述数据的任务,实现根据所述子服务中的数据更新所述缓存的所述存储模块中对应的所述数据。
进一步可选地,如上所述的装置中,所述生成模块,还用于将更新所述数据的任务存储在队列中;
进一步地,所述更新执行模块,具体用于:
启动所述线程池中的线程,控制所述线程从所述队列中获取所述任务,并与所述数据对应的子服务通信执行所述任务;
获取执行所述任务的所述线程返回的更新后的所述数据;
将更新后的所述数据存储在所述缓存的所述存储模块中。
进一步可选地,如上所述的装置中,所述生成模块,还用于若所述存储模块中同时符合所述数据更新策略数据有多个时,生成更新各所述数据的任务;获取各所述数据对应的子服务标识;将更新各所述数据的任务依次存储在对应的子服务标识对应的所述队列中;
进一步地,所述更新执行模块,具体用于:
启动所述线程池中的多个线程,控制各所述线程从各所述子服务标识对应的所述队列中依次获取所述任务,并与所述数据对应的子服务通信执行获取的所述任务。
进一步可选地,如上所述的装置中,若所述数据更新策略包括若发现主服务请求的查询结果中包括敏感数据时,更新所述缓存的所述存储模块中的所述敏感数据;
所述确定模块,具体用于:
接收主服务的数据查询;
根据所述数据查询从所述缓存的所述存储模块中获取所述数据查询对应的查询结果;
根据所述数据更新策略,判断所述查询结果的数据中是否包括敏感数据;所述敏感数据为出现概率低、但会影响用户操作和主程序逻辑的数据;
若包括,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
进一步可选地,如上所述的装置中,所述装置还包括:
分类模块,用于将所述缓存的所述存储模块中存储的所有数据分为三类:所述敏感数据、易变数据和不易变数据;所述易变数据为容易发生变化、但不会影响用户和主流程的数据;所述不易变数据为不容易发生变化的数据。
进一步可选地,如上所述的装置中,所述确定模块,具体用于:
根据所述数据更新策略,检测所述缓存的所述存储模块中存储的各所述数据的存储时长是否达到对应的变化时长阈值;其中各所述数据的所述变化时长阈值相同或者不同;
若达到,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
进一步可选地,如上所述的装置中,所述确定模块,具体用于:
根据所述数据更新策略,检测当前时刻是否为更新所述缓存的所述存储模块中存储的数据的预设时刻,若是,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
本发明还提供一种计算机设备,所述设备包括:
数据更新策略集合,用于存储数据更新策略;
数据库,用于存储缓存中的数据;
线程池,用于存储多个线程;
一个或者多个队列,用于存储所述线程池中的所述线程执行的任务;
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的缓存中的数据更新方法。
本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的缓存中的数据更新方法。
本发明的缓存中的数据更新方法、装置及计算机可读介质,通过根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;若需要,生成更新数据的任务;启动线程池中的线程与数据对应的子服务通信,执行更新数据的任务,实现根据子服务中的数据更新缓存的存储模块中对应的数据。本发明的技术方案,能够在当前条件满足更新策略集合中的某数据更新策略的条件时,根据对应的子服务中的数据更新缓存的存储模块中存储的数据,从而可以及时将子服务中的数据更新至缓存的存储模块中,保证了缓存的存储模块中的数据的时效性;另外,本发明的技术方案,由于及时更新了缓存的存储模块中的数据,从而能够在上层数据请求时,不用从底层的子服务中获取数据,直接根据缓存的存储模块的数据及时作出响应,从而能够有效地提升***的性能,降低底层服务的压力。因此,本发明的技术方案,能够很好地兼容缓存中的数据时效性和***性能的问题。
【附图说明】
图1为现有技术中常用的一种互联网微服务***架构图。
图2为现有技术中常用的另一种互联网微服务***架构图。
图3为本发明的缓存中数据的更新方法实施例的流程图。
图4为本实施例的缓存中的数据更新方法的一种应用架构图。
图5为本实施例的缓存中的数据更新方法的另一种应用架构图。
图6为本实施例的缓存中的数据更新方法的再一种应用架构图。
图7为本发明提供的一种缓存对主服务的数据查询得到的查询结果的示意图。
图8为本发明的缓存中的数据更新装置实施例一的结构图。
图9为本发明的缓存中的数据更新装置实施例二的结构图。
图10为本发明的计算机设备实施例的结构图。
图11为本发明提供的一种计算机设备的示例图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图3为本发明的缓存中数据的更新方法实施例的流程图。如图3所示,本实施例的缓存的中数据更新方法,具体可以包括如下步骤:
100、根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;若需要,执行步骤101,否则返回步骤100继续检测。
101、生成更新数据的任务;执行不足后102;
102、启动线程池中的线程与数据对应的子服务通信,执行更新数据的任务,实现根据子服务中的数据更新缓存的存储模块中对应的数据。
本实施例的缓存中的数据更新方法的执行主体为数据更新装置,该数据更新装置位于缓存中,用于对缓存中的数据进行更新。
图4为本实施例的缓存中的数据更新方法的一种应用架构图。如图4所示,该场景下的缓存中可以包括数据更新策略集合、存储模块、线程池和数据更新装置。其中该数据更新策略集合中可以包括一个或者多个数据更新策略,每个数据更新策略对应一个数据更新条件。该线程池中可以设置有一个、两个或者多个线程,每个线程与均用于执行数据更新的任务。该数据更新装置作为该缓存中的执行模块,用于根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;即判断当前的条件是否满足某个数据更新策略对应的数据更新条件,若满足,确定需要更新缓存的存储模块中存储的数据,否则不需要更新缓存的存储模块中存储的数据,此时可以继续检测。若需要更新缓存的存储模块中存储的数据时,该数据更新装置生成更新数据的任务;并启动线程池中的线程与数据对应的子服务通信,执行该更新数据的任务,实现根据子服务中的数据更新缓存的存储模块中对应的数据。图4所示实施例中以线程池中的线程可以分别与子服务A、子服务B和子服务C三个子服务通信为例,实现根据子服务A、子服务B或子服务C中的子服务中的数据更新缓存中的存储模块中的数据。需要说明的是,在缓存的存储模块中除了存储每个数据之外,还记录有每个数据的来源,如来自于哪个子服务,这样,数据更新装置在启动线程池中的线程时,可以告知该线程需要与哪个子服务通信,以实现根据该子服务中的数据更新缓存的存储模块中的该数据。其中缓存中的存储模块可以采用数据库,也可以用redis或者其他任何存储设备。
实际应用场景中,数据更新方法的应用架构中也可以仅包括其中一个子服务,也可以包括更多的子服务,在此不再一一举例赘述。
例如若根据数据更新策略,仅检测到需要执行某个数据,此时图4所示的缓存中的数据更新装置可以生成该数据更新任务。由于仅有一个任务,可以仅启动线程池中的一个线程执行该任务,从而实现根据该数据对应的子服务中的数据更新缓存的存储模块中对应的数据。
可选地,为了便于管理任务,上述实施例中,也可以将数据更新装置生成的任务存储在一队列中,然后由数据更新装置启动的线程池中的线程,并控制线程从该队列中获取该任务,并与数据对应的子服务通信执行该任务。然后在线程执行完数据更新任务后,线程返回更新后的数据,对应地,数据更新装置获取执行任务的线程返回的更新后的数据;并将更新后的数据存储在缓存的存储模块中,从而完成数据更新。对应于缓存的存储模块中的每一个数据可以按照上述方式进行数据更新。此时对应的缓存中的数据更新方法的另一种应用架构图,如图5所示。
另外,实际应用中,会存在需要同时更新缓存的存储模块中的多个数据,此时,也可以采用图5所示的架构图。当需要同时对缓存的存储模块中的多个数据进行更新时,此时,对应的步骤101具体可以为分别生成更新每个数据的任务,然后对应地,依次将生成的每个任务存储在队列中,这样队列中可以对应存储多个数据对应的多个任务。且根据存储模块中存储的每个数据的对应的子服务标识,可以在每个数据的任务中标识该任务对应的子服务标识。这样,线程在后续执行任务时,可以知道具体是与哪个子服务通信实现对该任务的执行。然后数据更新装置可以启动线程池中的多个线程,每个线程依次从队列中获取一个任务,并执行该任务,实现根据该任务对应的子服务中的数据更新该任务对应的存储模块中的数据。且本实施例的线程池中的多个线程可以并行执行,相互之间没有偏序关系,从而可以由多个线程同时执行多个数据更新任务,从而能够有效地提高数据更新的性能。
或者可选地,图6为本实施例的缓存中的数据更新方法的再一种应用架构图,如图6所示,为不同于图5的在一种应用场景,在图6所示的架构中,设置有多个队列,每个队列用于存储同一个子服务对应的任务。例如,此时,若存储模块中同时符合数据更新策略数据有多个时,将更新数据的任务存储在队列中,具体可以包括:获取各数据对应的子服务标识;如从缓存的存储模块中记录的各数据的来源,获取各数据对应的子服务标识。然后将更新各数据的任务依次存储在对应的子服务标识对应的队列中。如图6所示,将子服务A对应的任务都存储在队列A中,将子服务B对应的任务都存储在队列B中,将子服务C对应的任务都存储在队列C中。然后数据更新装置启动线程池中的多个线程,控制各线程从各子服务标识对应的队列中依次获取任务,并与数据对应的子服务通信执行获取的任务。例如,线程池中可以包括多个线程同时启动,如线程1从子服务A对应的队列A中获取第一个任务,并与子服务A通信,利用子服务A中的第一任务对应的数据更新缓存的存储模块中对应的数据;线程2从子服务B对应的队列B中获取第一个任务,并与子服务B通信,利用子服务B中的第一任务对应的数据更新缓存的存储模块中对应的数据;线程3从子服务C对应的队列C中获取第一个任务,并与子服务C通信,利用子服务C中的第一任务对应的数据更新缓存的存储模块中对应的数据;同理,线程4从子服务A对应的队列A中获取第二个任务,并执行;线程5从子服务B对应的队列B中获取第二个任务,并执行;线程6从子服务C对应的队列C中获取第二个任务,并执行;依此类推,在线程数足够多的情况下,所有线程分别执行队列A、队列B和队列C中的一个任务,实现对缓存的存储模块中该任务对应的数据进行更新。或者在线程池中的线程数不是足够多的情况下时,可以在先执行任务的线程执行任务结束,返回更新的数据之后,再次控制该线程继续执行之前执行的队列中未完成的任务。或者也可以控制该线程执行之前执行的队列之外的其他队列中未完成的任务。
本实施例的缓存中的数据更新方法,通过根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;若需要,生成更新数据的任务;启动线程池中的线程与数据对应的子服务通信,执行更新数据的任务,实现根据子服务中的数据更新缓存的存储模块中对应的数据。本实施例的技术方案,能够在当前条件满足更新策略集合中的某数据更新策略的条件时,根据对应的子服务中的数据更新缓存的存储模块中存储的数据,从而可以及时将子服务中的数据更新至缓存的存储模块中,保证了缓存的存储模块中的数据的时效性;另外,本实施例的技术方案,由于及时更新了缓存的存储模块中的数据,从而能够在上层数据请求时,不用从底层的子服务中获取数据,直接根据缓存的存储模块的数据及时作出响应,从而能够有效地提升***的性能,降低底层服务的压力。因此,本实施例的技术方案,能够很好地兼容缓存中的数据时效性和***性能的问题。
需要说明的是,上述实施例的步骤100“根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据”中的数据更新策略集合中可以包括多种数据更新策略,例如,本实施例中以包括下述几种数据更新策略为例,来说明本发明的技术方案。
a)数据更新策略可以为:若数据更新策略包括若发现主服务请求的查询结果中包括敏感数据时,更新缓存的存储模块中的敏感数据;
此时对应的步骤100,具体可以包括如下步骤:
(1)接收主服务的数据查询;
(2)根据数据查询从缓存的存储模块中获取数据查询对应的查询结果;
(3)根据数据更新策略,判断查询结果的数据中是否包括敏感数据;若包括,确定需要更新缓存的存储模块中存储的数据,否则确定不需要更新缓存的存储模块中存储的数据。
当确定需要更新缓存的存储模块中存储的数据时,此时按照上述图1所示实施例的步骤101和步骤102实现缓存的存储模块中的数据的更新,详细可以参考上述实施例的相关记载,在此不再赘述。此时对应的该种数据更新方案为一种主动更新的数据更新方案。即在主服务请求数据查询时,若发现查询结果中包括敏感数据时,才与数据对应的子服务进行通信,实现数据的更新。但是如果更新后的数据仍包括敏感数据,确定该数据已为最新数据,此时可以向主服务对应的用户返回更新后的包括敏感数据的查询结果。
例如图7为本发明提供的一种缓存对主服务的数据查询得到的查询结果的示意图。如图7所示,为一种云路由查询列表为例,主服务在查询路由表时依赖的底层服务有:路由服务,NAT服务,VPN服务,虚机服务等。源网段、目的网段、路由类型是从路由服务获取;当路由类型是NAT网关、VPN网关和实例路由的时候,下一跳和状态信息分别从NAT服务、VPN服务和虚机服务等服务获取。
按照传统的方案,拼装图7的路由应该先查询路由表服务,然后再依次查询NAT服务,VPN服务和虚机服务,将每个服务的返回结果整合后方能得到路由信息。其缺点有三:1、依次访问4个远程服务,性能很差;2、若其中一个服务不可用,将导致路由表查询失败,可用性降低;3、用户访问量变大时,底层服务的压力变大。因此考虑缓存数据,可以采用上述图5或者图6所示的架构图,实现数据的缓存,并采用能够兼容缓存中的数据时效性和***性能的问数据更新方案管理缓存的存储模块中的数据。
对于该主动更新的数据更新方案,当查询结果中包含敏感数据时,每次查询都执行同步刷新,直到没有敏感数据,才不执行同步刷新。因为主动更新是同步的,为了提升***性能,可以采用线程池中的多线程查询底层服务。如图7,查询结果中的NAT网关和VPN网关均为不可用状态,则开启两个线程同时查询NAT服务和VPN服务,从而加快了响应速度。
可选地,在步骤(3)之前,可以包括:将缓存的存储模块中存储的所有数据分为三类:敏感数据、易变数据和不易变数据;易变数据为容易发生变化、但不会影响用户和主流程的数据;不易变数据为不容易发生变化的数据。详细解释如下:
敏感数据,该类型的数据是指出现概率较低,但会影响用户操作和主程序的逻辑,因此对数据的实时性要求很高。例如路由表中的“状态”字段,当状态不可用时,会影响用户网络的连通性。当网络地址转换(Network Address Translation;NAT)挂掉时,NAT网关显示不可用状态,用户重启NAT后会立刻查看路由表的状态,如果此时因为缓存数据没有更新导致状态仍然显示不可用,会引起用户的恐慌。因此状态为不可用的时候,该数据“不可用”是敏感数据。在绝大多数情况下,状态都应该是可用的,因此当状态是可用时,该数据不是敏感数据。
易变数据,该类型的数据是指容易变化但不会影响用户和主流程的数据,因此实时性要求不高。比如下一跳,展示的是NAT名称、虚拟专用网络(Virtual Private Network;VPN)名称和虚机名称。当用户更改NAT名称时,该列应该变成新的名称。但是如果在较短的时间内仍然显示旧名称,也不会引起用户的不满。为了不影响***的性能,不会对该类数据实时刷新,只需保证数据的最终一致性即可。
不易变数据,这类数据包含三种情况,一种是不变数据,比如ID;第二种是只有在主服务端才能发起数据改变,比如网段;第三种是在极端情况下由***管理员干预才能改变的数据。对这类数据的时效性要求非常低。实际应用中了除了敏感数据和易变数据之外的其他数据都可以为非易变数据。
b)数据更新策略可以为:缓存的存储模块中存储的各数据的存储时长达到对应的变化时长阈值时,更新缓存的存储模块中存储的数据。该变化时长阈值可以为不易变数据的变化时长阈值或者也可以为易变数据的变化时长阈值。
此时对应的步骤100,具体可以包括如下步骤:根据数据更新策略,检测缓存的存储模块中存储的各数据的存储时长是否达到对应的变化时长阈值;若达到,确定需要更新缓存的存储模块中存储的数据,否则确定不需要更新缓存的存储模块中存储的数据。
本实施例中的缓存的存储模块中各数据的变化时长阈值可以相同或者也可以不同;该变化时长阈值即为该数据在缓存中的生命周期,缓存的存储模块中各数据的生命周期跟数据分类密切相关。对于实时性要求较高的敏感数据,其缓存失效时间即变化时长阈值可以设置为秒级,甚至实时刷新。对于易变数据,可以将其缓存失效时间即变化时长阈值定为分钟或小时级;不易变数据的缓存失效时间即变化时长阈值可以设置为小时级或者天级。
缓存的生命周期不仅仅是根据各类型数据的缓存失效时间的设定,有时候一个数据的更新可能会影响到其他数据的生命或延长或缩短,此时需要根据具体业务来分析各数据的缓存失效时间。
当确定需要更新缓存的存储模块中存储的数据时,此时按照上述图1所示实施例的步骤101和步骤102实现缓存的存储模块中的数据的更新,详细可以参考上述实施例的相关记载,在此不再赘述。此时对应的该种数据更新方案为一种被动更新的数据更新方案。即在主服务请求数据查询时,若发现查询结果中包括敏感数据时,才与数据对应的子服务进行通信,实现数据的更新。但是如果更新后的数据仍包括敏感数据,确定该数据已为最新数据,此时可以向主服务对应的用户返回更新后的包括敏感数据的查询结果。
本实施例的被动更新的数据更新方案中,若某数据的变化时长阈值超过不易变数据的阈值或者易变数据的阈值时,触发异步的被动更新。这种刷新方式与前面的不同之处在于,主线程把旧的数据直接返回,然后只开启一个线程在后台刷新数据。这种情况基于一个基本的判断,大概率事件这次查询的数据跟上次一样。倘若凑巧不一样,仍然返回旧的数据,由后台线程保持数据的最终一致性。
b)数据更新策略可以为:设置数据更新的预设时刻,在预设时刻来临时,更新缓存的存储模块中的所有数据。其中的预设时刻可以为周期性的,如每天的数据访问低估期,或者每周或者每个月的一个预设时刻。该种数据更新方案也为一种被动更新的数据更新方案。该更新方案相当于开启了定时任务,在后台刷新数据。
此时对应的步骤100,具体可以包括如下步骤:根据数据更新策略,检测当前时刻是否为更新缓存的存储模块中存储的数据的预设时刻,若是,确定需要更新缓存的存储模块中存储的数据,否则确定不需要更新缓存的存储模块中存储的数据。
上述几种数据更新策略仅为举例,实际应用中,还可以设置其他的数据更新策略,每一种数据更新策略都可以根据数据类型、生命周期设定阈值和具体业务逻辑,返回需要刷新的数据以及数据刷新模式,供数据更新装置使用。本实施例的多种数据更新策略可以存储在数据更新策略库中。
需要说明的是,根据上述各种数据更新策略在更新缓存中的数据时,均可以采用多线程的方式进行更新,也可以采用单线程的方式进行更新。但是多线程的实施需要付出一定的代价,比如消耗内存、占用CPU等等,因此,优选地,本实施例中,可以仅针对于上述数据更新策略为a)时,启动多线程。由于数据更新策略为a)时,要等待子服务返回后才能返回主服务的请求,所以优选地,开启多线程节省时间。而对于上述数据更新策略为b)和c)的情况下,可以认为只是常规的检查更新,此时仅启动线程池中一个单线程即可实现数据的更新。
另外,可选地,本实施例的缓存中的数据更新装置,还可以预测主服务将来会有哪些数据查询,从而根据预测的数据查询预先从对应的子服务中获取对应的查询结果数据,并将查询结果数据存储在缓存的存储模块中。这样,当接收到主服务的发送的该预测的数据查询时,不用从底层子服务获取该查询结果数据,可以直接根据缓存的存储模块中存储的查询结果数据响应于主服务。从而能够避免在大量的预测的数据查询发生时,降低底层子服务的压力,减少响应时间,有效地提高***的响应性能。例如,大客户会提前通知大量的数据查询,或者某些复杂的操作,一定会触发一些别的操作,类似情况中,缓存中的数据更新装置根据已知的通知或者已知的复杂操作,可以预测到将要进行的数据查询。从而采用上述实施例的技术方案,提前从相应的子服务中获取预测的数据查询对应的查询结果数据,并存储在缓存的存储模块中,实现对缓存的存储模块中的数据进行更新。
图8为本发明的缓存中的数据更新装置实施例一的结构图。如图8所示,本实施例的缓存中的数据更新装置,具体可以包括:
确定模块10用于根据缓存中的数据更新策略集合20中的数据更新策略,确定是否需要更新缓存的存储模块21中存储的数据;
生成模块11用于若确定模块10确定需要更新缓存的存储模块21中存储的数据时,生成更新数据的任务;
更新执行模块12用于启动缓存中的线程池22中的线程与数据对应的子服务通信,执行生成模块11生成的更新数据的任务,实现根据子服务中的数据更新缓存的存储模块21中对应的数据。例如图8所示,以对应子服务包括子服务A、子服务B或者子服务C为例,实际应用中,还可以包括其他子服务。
本实施例的缓存中的数据更新装置,通过采用上述模块实现缓存中的数据更新的实现原理以及技术效果与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。
图9为本发明的缓存中的数据更新装置实施例二的结构图。如图9所示,本实施例的缓存中的数据更新装置,在上述图8所示实施例的技术方案的基础上,进一步更加详细地介绍本发明的技术方案。
本实施例的缓存中的数据更新装置中,生成模块11还用于将更新数据的任务存储在缓存的队列23中;
进一步地,更新执行模块12具体用于:
启动线程池22中的线程,控制线程从队列23中获取任务,并与数据对应的子服务通信执行任务;
获取执行任务的线程返回的更新后的数据;
将更新后的数据存储在缓存的存储模块21中。
或者可选地,本实施例的缓存中的数据更新装置中,生成模块11还用于若存储模块21中同时符合数据更新策略数据有多个时,生成更新各数据的任务;获取各数据对应的子服务标识;将更新各数据的任务依次存储在对应的子服务标识对应的队列中;例如,图9所示实施例中,以子服务A对应队列23A,子服务B对应队列23B,子服务C对应队列23C为例,实际应用中,还可以包括其他子服务及对应的队列。
进一步地,更新执行模块12具体用于:
启动线程池22中的多个线程,控制各线程从各子服务标识对应的队列中依次获取任务,并与数据对应的子服务通信执行获取的任务。
进一步可选地,本实施例的缓存中的数据更新装置中,若数据更新策略包括若发现主服务请求的查询结果中包括敏感数据时,更新缓存的存储模块中的敏感数据;
确定模块10具体用于:
接收主服务的数据查询;
根据数据查询从缓存的存储模块21中获取数据查询对应的查询结果;
根据数据更新策略,判断查询结果的数据中是否包括敏感数据;敏感数据为出现概率低、但会影响用户操作和主程序逻辑的数据;
若包括,确定需要更新缓存的存储模块21中存储的数据,否则确定不需要更新缓存的存储模块21中存储的数据。
或者可选地,如图9所示,本实施例的缓存中的数据更新装置中,还包括分类模块13用于将缓存的存储模块21中存储的所有数据分为三类:敏感数据、易变数据和不易变数据;易变数据为容易发生变化、但不会影响用户和主流程的数据;不易变数据为不容易发生变化的数据。
确定模块10具体用于根据数据更新策略,判断查询结果的数据中是否包括分类模块13分类后的敏感数据。
进一步可选地,本实施例的缓存中的数据更新装置中,确定模块10具体用于:
根据数据更新策略集合20中的数据更新策略,检测缓存的存储模块21中存储的各数据的存储时长是否达到对应的变化时长阈值;其中各数据的变化时长阈值相同或者不同;
若达到,确定需要更新缓存的存储模块21中存储的数据,否则确定不需要更新缓存的存储模块21中存储的数据。
进一步可选地,本实施例的缓存中的数据更新装置中,确定模块10具体用于:
根据数据更新策略集合20中的数据更新策略,检测当前时刻是否为更新缓存的存储模块21中存储的数据的预设时刻,若是,确定需要更新缓存的存储模块21中存储的数据,否则确定不需要更新缓存的存储模块21中存储的数据。
本实施例的缓存中的数据更新装置,通过采用上述模块实现缓存中的数据更新的实现原理以及技术效果与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。
图10为本发明的计算机设备实施例的结构图。如图10所示,本实施例的计算机设备,包括:一个或多个处理器30,以及存储器40,还包括:数据更新策略集合50用于存储数据更新策略;数据库60用于存储缓存中的数据;线程池70用于存储多个线程;一个或者多个队列80用于存储线程池中的线程执行的任务;队列数量的设置详细可以参考上述图5或者图6所示实施例的记载,在此不再赘述。本实施例中以包括一个队列80为例。
其中存储器40用于存储一个或多个程序,当存储器40中存储的一个或多个程序被一个或多个处理器30执行,使得一个或多个处理器30实现如上图3所示实施例的缓存中的数据更新方法。且在实现如上图3所示实施例的缓存中的数据更新方法过程中,处理器30会调用数据更新策略集合50、数据库60、线程池70以及队列80中的信息,以实现缓存中的数据更新。图10所示实施例中以包括一个处理器30为例。本实施例的计算机设备即相当于一个缓存。
例如处理器30执行存储器40中存储的程序时,会根据数据更新策略集合50中的数据更新策略,确定是否需要更新缓存的数据库60中存储的数据,若需要,生成更新数据的任务;并将生成的任务存储在队列80中,然后启动线程池70中的线程,从队列80中获取更新数据的任务,并执行更新数据的任务,实现根据子服务中的数据更新缓存的存储模块中对应的数据。详细可以参考上述相关实施例的记载,在此不再赘述。
例如,图11为本发明提供的一种计算机设备的示例图。图11示出了适于用来实现本发明实施方式的示例性计算机设备12a的框图。图11显示的计算机设备12a仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,计算机设备12a以通用计算设备的形式表现。计算机设备12a的组件可以包括但不限于:一个或者多个处理器16a,***存储器28a,连接不同***组件(包括***存储器28a和处理器16a)的总线18a。
总线18a表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机设备12a典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机设备12a访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28a可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30a和/或高速缓存存储器32a。计算机设备12a可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34a可以用于读写不可移动的、非易失性磁介质(图11未显示,通常称为“硬盘驱动器”)。尽管图11中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18a相连。***存储器28a可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明上述图3-图9各实施例的功能。
具有一组(至少一个)程序模块42a的程序/实用工具40a,可以存储在例如***存储器28a中,这样的程序模块42a包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42a通常执行本发明所描述的上述图3-图9各实施例中的功能和/或方法。
计算机设备12a也可以与一个或多个外部设备14a(例如键盘、指向设备、显示器24a等)通信,还可与一个或者多个使得用户能与该计算机设备12a交互的设备通信,和/或与使得该计算机设备12a能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22a进行。并且,计算机设备12a还可以通过网络适配器20a与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20a通过总线18a与计算机设备12a的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12a使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
处理器16a通过运行存储在***存储器28a中的程序,从而执行各种功能应用以及数据处理,例如实现上述实施例所示的缓存中的数据更新方法。
本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例所示的缓存中的数据更新方法。
本实施例的计算机可读介质可以包括上述图11所示实施例中的***存储器28a中的RAM30a、和/或高速缓存存储器32a、和/或存储***34a。
随着科技的发展,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载,或者采用其他方式获取。因此,本实施例中的计算机可读介质不仅可以包括有形的介质,还可以包括无形的介质。
本实施例的计算机可读介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (16)
1.一种缓存中的数据更新方法,其特征在于,所述方法包括:
根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;
若需要,生成更新所述数据的任务;
启动线程池中的线程与所述数据对应的子服务通信,执行更新所述数据的任务,实现根据所述子服务中的数据更新所述缓存的所述存储模块中对应的所述数据。
2.根据权利要求1所述的方法,其特征在于,生成更新所述数据的任务之后,所述方法还包括:
将更新所述数据的任务存储在队列中;
进一步地,启动线程池中的线程与所述数据对应的子服务通信,执行更新所述数据的任务,实现根据所述子服务中的数据更新所述缓存的所述存储模块中对应的所述数据,具体包括:
启动所述线程池中的线程,控制所述线程从所述队列中获取所述任务,并与所述数据对应的子服务通信执行所述任务;
获取执行所述任务的所述线程返回的更新后的所述数据;
将更新后的所述数据存储在所述缓存的所述存储模块中。
3.根据权利要求2所述的方法,其特征在于,若所述存储模块中同时符合所述数据更新策略数据有多个时,将更新所述数据的任务存储在队列中,具体包括:
获取各所述数据对应的子服务标识;
将更新各所述数据的任务依次存储在对应的子服务标识对应的所述队列中;
进一步地,启动所述线程池中的线程,控制所述线程从所述队列中获取所述任务,并与所述数据对应的子服务通信执行所述任务,具体包括:
启动所述线程池中的多个线程,控制各所述线程从各所述子服务标识对应的所述队列中依次获取所述任务,并与所述数据对应的子服务通信执行获取的所述任务。
4.根据权利要求1-3任一所述的方法,其特征在于,若所述数据更新策略包括若发现主服务请求的查询结果中包括敏感数据时,更新所述缓存的所述存储模块中的所述敏感数据;根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据,具体包括:
接收主服务的数据查询;
根据所述数据查询从所述缓存的所述存储模块中获取所述数据查询对应的查询结果;
根据所述数据更新策略,判断所述查询结果的数据中是否包括敏感数据;所述敏感数据为出现概率低、但会影响用户操作和主程序逻辑的数据;
若包括,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
5.根据权利要求4所述的方法,其特征在于,判断所述查询结果中是否包括敏感数据之前,所述方法还包括:
将所述缓存的所述存储模块中存储的所有数据分为三类:所述敏感数据、易变数据和不易变数据;所述易变数据为容易发生变化、但不会影响用户和主流程的数据;所述不易变数据为不容易发生变化的数据。
6.根据权利要求1-2任一所述的方法,其特征在于,根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据,具体包括:
根据所述数据更新策略,检测所述缓存的所述存储模块中存储的各所述数据的存储时长是否达到对应的变化时长阈值;其中各所述数据的所述变化时长阈值相同或者不同;
若达到,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
7.根据权利要求1-2任一所述的方法,其特征在于,根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据,具体包括:
根据所述数据更新策略,检测当前时刻是否为更新所述缓存的所述存储模块中存储的数据的预设时刻,若是,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
8.一种缓存中的数据更新装置,其特征在于,所述装置包括:
确定模块,用于根据数据更新策略集合中的数据更新策略,确定是否需要更新缓存的存储模块中存储的数据;
生成模块,用于若所述确定模块确定需要更新缓存的存储模块中存储的数据时,生成更新所述数据的任务;
更新执行模块,用于启动线程池中的线程与所述数据对应的子服务通信,执行更新所述数据的任务,实现根据所述子服务中的数据更新所述缓存的所述存储模块中对应的所述数据。
9.根据权利要求8所述的装置,其特征在于,所述生成模块,还用于将更新所述数据的任务存储在队列中;
进一步地,所述更新执行模块,具体用于:
启动所述线程池中的线程,控制所述线程从所述队列中获取所述任务,并与所述数据对应的子服务通信执行所述任务;
获取执行所述任务的所述线程返回的更新后的所述数据;
将更新后的所述数据存储在所述缓存的所述存储模块中。
10.根据权利要求9所述的装置,其特征在于,所述生成模块,还用于若所述存储模块中同时符合所述数据更新策略数据有多个时,生成更新各所述数据的任务;获取各所述数据对应的子服务标识;将更新各所述数据的任务依次存储在对应的子服务标识对应的所述队列中;
进一步地,所述更新执行模块,具体用于:
启动所述线程池中的多个线程,控制各所述线程从各所述子服务标识对应的所述队列中依次获取所述任务,并与所述数据对应的子服务通信执行获取的所述任务。
11.根据权利要求8-10任一所述的装置,其特征在于,若所述数据更新策略包括若发现主服务请求的查询结果中包括敏感数据时,更新所述缓存的所述存储模块中的所述敏感数据;
所述确定模块,具体用于:
接收主服务的数据查询;
根据所述数据查询从所述缓存的所述存储模块中获取所述数据查询对应的查询结果;
根据所述数据更新策略,判断所述查询结果的数据中是否包括敏感数据;所述敏感数据为出现概率低、但会影响用户操作和主程序逻辑的数据;
若包括,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
分类模块,用于将所述缓存的所述存储模块中存储的所有数据分为三类:所述敏感数据、易变数据和不易变数据;所述易变数据为容易发生变化、但不会影响用户和主流程的数据;所述不易变数据为不容易发生变化的数据。
13.根据权利要求8-9任一所述的装置,其特征在于,所述确定模块,具体用于:
根据所述数据更新策略,检测所述缓存的所述存储模块中存储的各所述数据的存储时长是否达到对应的变化时长阈值;其中各所述数据的所述变化时长阈值相同或者不同;
若达到,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
14.根据权利要求8-9任一所述的装置,其特征在于,所述确定模块,具体用于:
根据所述数据更新策略,检测当前时刻是否为更新所述缓存的所述存储模块中存储的数据的预设时刻,若是,确定需要更新所述缓存的所述存储模块中存储的数据,否则确定不需要更新所述缓存的所述存储模块中存储的数据。
15.一种计算机设备,其特征在于,所述设备包括:
数据更新策略集合,用于存储数据更新策略;
数据库,用于存储缓存中的数据;
线程池,用于存储多个线程;
一个或者多个队列,用于存储所述线程池中的所述线程执行的任务;
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
16.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710966855.3A CN107958018B (zh) | 2017-10-17 | 2017-10-17 | 缓存中的数据更新方法、装置及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710966855.3A CN107958018B (zh) | 2017-10-17 | 2017-10-17 | 缓存中的数据更新方法、装置及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107958018A true CN107958018A (zh) | 2018-04-24 |
CN107958018B CN107958018B (zh) | 2021-06-11 |
Family
ID=61963491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710966855.3A Active CN107958018B (zh) | 2017-10-17 | 2017-10-17 | 缓存中的数据更新方法、装置及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107958018B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271395A (zh) * | 2018-09-11 | 2019-01-25 | 南京轨道交通***工程有限公司 | 用于综合监控***的大规模实时数据更新发布***及方法 |
CN110704110A (zh) * | 2019-09-30 | 2020-01-17 | 浪潮软件股份有限公司 | 一种提高***高并发情况下的响应速度的方法和装置 |
CN110837427A (zh) * | 2019-11-15 | 2020-02-25 | 四川长虹电器股份有限公司 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
CN110888889A (zh) * | 2018-08-17 | 2020-03-17 | 阿里巴巴集团控股有限公司 | 一种数据信息更新方法、装置及设备 |
CN111245873A (zh) * | 2018-11-28 | 2020-06-05 | 北京京东尚科信息技术有限公司 | 服务降级方法、装置、设备及存储介质 |
CN111414389A (zh) * | 2020-03-19 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184613A1 (en) * | 2005-02-15 | 2006-08-17 | Xata Corporation | Data conduit |
CN102117338A (zh) * | 2011-04-02 | 2011-07-06 | 天脉聚源(北京)传媒科技有限公司 | 一种数据库缓存的方法 |
WO2014056534A1 (en) * | 2012-10-11 | 2014-04-17 | Technische Universität Dortmund | Context-sensitive data-cache |
CN104331470A (zh) * | 2014-10-31 | 2015-02-04 | 深圳市东信时代信息技术有限公司 | 基于缓存机制的数据处理方法及*** |
US9058355B1 (en) * | 2008-06-18 | 2015-06-16 | Zeitera, Llc | Scalable, adaptable, and manageable system for multimedia identification |
CN104992112A (zh) * | 2015-05-19 | 2015-10-21 | 上海理工大学 | 检测安卓***敏感信息泄露的方法和装置 |
CN105528367A (zh) * | 2014-09-30 | 2016-04-27 | 华东师范大学 | 基于开源大数据对时间敏感数据的存储和近实时查询方法 |
CN106227819A (zh) * | 2016-07-22 | 2016-12-14 | 乐视控股(北京)有限公司 | 一种获取评论数据的方法及装置 |
CN106815329A (zh) * | 2016-12-29 | 2017-06-09 | 网易无尾熊(杭州)科技有限公司 | 一种缓存数据的更新方法及装置 |
-
2017
- 2017-10-17 CN CN201710966855.3A patent/CN107958018B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184613A1 (en) * | 2005-02-15 | 2006-08-17 | Xata Corporation | Data conduit |
US9058355B1 (en) * | 2008-06-18 | 2015-06-16 | Zeitera, Llc | Scalable, adaptable, and manageable system for multimedia identification |
CN102117338A (zh) * | 2011-04-02 | 2011-07-06 | 天脉聚源(北京)传媒科技有限公司 | 一种数据库缓存的方法 |
WO2014056534A1 (en) * | 2012-10-11 | 2014-04-17 | Technische Universität Dortmund | Context-sensitive data-cache |
CN105528367A (zh) * | 2014-09-30 | 2016-04-27 | 华东师范大学 | 基于开源大数据对时间敏感数据的存储和近实时查询方法 |
CN104331470A (zh) * | 2014-10-31 | 2015-02-04 | 深圳市东信时代信息技术有限公司 | 基于缓存机制的数据处理方法及*** |
CN104992112A (zh) * | 2015-05-19 | 2015-10-21 | 上海理工大学 | 检测安卓***敏感信息泄露的方法和装置 |
CN106227819A (zh) * | 2016-07-22 | 2016-12-14 | 乐视控股(北京)有限公司 | 一种获取评论数据的方法及装置 |
CN106815329A (zh) * | 2016-12-29 | 2017-06-09 | 网易无尾熊(杭州)科技有限公司 | 一种缓存数据的更新方法及装置 |
Non-Patent Citations (1)
Title |
---|
陆文彬: "基于移动云计算环境的缓存模型及其一致性维护策略", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888889A (zh) * | 2018-08-17 | 2020-03-17 | 阿里巴巴集团控股有限公司 | 一种数据信息更新方法、装置及设备 |
CN110888889B (zh) * | 2018-08-17 | 2023-08-15 | 阿里巴巴集团控股有限公司 | 一种数据信息更新方法、装置及设备 |
CN109271395A (zh) * | 2018-09-11 | 2019-01-25 | 南京轨道交通***工程有限公司 | 用于综合监控***的大规模实时数据更新发布***及方法 |
CN111245873A (zh) * | 2018-11-28 | 2020-06-05 | 北京京东尚科信息技术有限公司 | 服务降级方法、装置、设备及存储介质 |
CN110704110A (zh) * | 2019-09-30 | 2020-01-17 | 浪潮软件股份有限公司 | 一种提高***高并发情况下的响应速度的方法和装置 |
CN110837427A (zh) * | 2019-11-15 | 2020-02-25 | 四川长虹电器股份有限公司 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
CN110837427B (zh) * | 2019-11-15 | 2022-02-01 | 四川长虹电器股份有限公司 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
CN111414389A (zh) * | 2020-03-19 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN111414389B (zh) * | 2020-03-19 | 2023-09-22 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107958018B (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107958018A (zh) | 缓存中的数据更新方法、装置及计算机可读介质 | |
CN104133780B (zh) | 一种跨页预取方法、装置及*** | |
CN108369534A (zh) | 代码执行请求路由 | |
CN105531688B (zh) | 提供作为其它服务的资源的服务 | |
CN106844784A (zh) | 数据缓存方法、装置及计算机可读存储介质 | |
US9639459B2 (en) | I/O latency and IOPs performance in thin provisioned volumes | |
CN109491928A (zh) | 缓存控制方法、装置、终端及存储介质 | |
CN103368867B (zh) | 高速缓存经网络与辅助站点通信的对象的方法和*** | |
CN109213568A (zh) | 一种区块链网络服务平台及其部署方法、存储介质 | |
CN110134623A (zh) | 可定制的多队列dma接口 | |
CN107493329A (zh) | 一种分布式内存文件***的远程文件访问方法 | |
CN109213697A (zh) | 智能存储器数据存储或加载方法和装置 | |
CN103455363B (zh) | 一种虚拟机的指令处理方法、装置及物理主机 | |
CN114244595B (zh) | 权限信息的获取方法、装置、计算机设备及存储介质 | |
CN109656957A (zh) | 基于持久层框架的数据查询方法及装置 | |
CN109933585A (zh) | 数据查询方法和数据查询*** | |
CN109144972A (zh) | 一种数据迁移的方法以及数据节点 | |
JP2020532803A (ja) | 同期入出を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法、システム、コンピュータ・プログラムおよび記憶制御装置 | |
Hao et al. | iTaskOffloading: Intelligent task offloading for a cloud-edge collaborative system | |
CN106817388A (zh) | 虚拟机、宿主机获取数据的方法、装置及访问数据的*** | |
CN110020061A (zh) | 一种智慧城市时空信息云平台服务引擎 | |
CN109740083A (zh) | 一种页面跳转的方法及装置 | |
US11418583B2 (en) | Transaction process management by dynamic transaction aggregation | |
US10579419B2 (en) | Data analysis in storage system | |
US10802874B1 (en) | Cloud agnostic task scheduler |
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 |