CN114764416A - 数据缓存方法、装置、设备及计算机可读存储介质 - Google Patents
数据缓存方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114764416A CN114764416A CN202110057914.1A CN202110057914A CN114764416A CN 114764416 A CN114764416 A CN 114764416A CN 202110057914 A CN202110057914 A CN 202110057914A CN 114764416 A CN114764416 A CN 114764416A
- Authority
- CN
- China
- Prior art keywords
- cache
- policy
- caching
- data
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000001914 filtration Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 22
- 230000015654 memory Effects 0.000 claims description 25
- 238000005457 optimization Methods 0.000 claims description 15
- 238000010801 machine learning Methods 0.000 claims description 9
- 230000000694 effects Effects 0.000 abstract description 21
- 230000008569 process Effects 0.000 description 24
- 230000003044 adaptive effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000013508 migration Methods 0.000 description 12
- 230000005012 migration Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002068 genetic effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Evolutionary Biology (AREA)
- Databases & Information Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Genetics & Genomics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Physiology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据缓存方法、装置、设备及计算机可读存储介质,其中,该方法包括:从多个类型的缓存策略库中获取多个缓存策略,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个,过滤类型的缓存策略用于过滤数据,预取类型的缓存策略用于预取数据,替换类型的缓存策略用于从缓存中淘汰数据,牺牲缓存类型的缓存策略用于处理从缓存中淘汰的数据;将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据。利用上述方法可以灵活地选取运用于第一实体产生的数据的缓存策略,从而提高第一缓存策略组对第一实体产生的数据的缓存效果。
Description
技术领域
本申请涉及缓存技术领域,尤其涉及一种数据缓存方法、装置、设备及计算机可读存储介质。
背景技术
随着缓存技术的快速发展,用户获取数据的速度也越来越快。其中,影响用户获取数据的速度的一个关键因素是缓存策略,一个合适的缓存策略能够保证缓存的有效性,从而能够提高用户获取数据的速度。但是,在实际应用过程中,由于业务逻辑的不同,不同用户的数据访问模式也可能不同,那么适用于处理这些用户产生的数据的缓存策略也会有所差异。因此,为了适应不同用户的数据访问模式,构建出灵活且适应能力强的缓存策略是当前缓存技术领域中的一个亟需解决的问题。
发明内容
本申请公开了一种数据缓存方法、装置、设备及计算机可读存储介质,能够构建出灵活度高且适应能力强的缓存策略组,并且利用该缓存策略组进行数据缓存时,可以提高缓存的有效性,从而提高数据读取的速度。
第一方面,本申请提供了一种数据缓存方法,该方法包括如下步骤:
从多个类型的缓存策略库中获取多个缓存策略,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个,过滤类型的缓存策略用于过滤数据,预取类型的缓存策略用于预取数据,替换类型的缓存策略用于从缓存中淘汰数据,牺牲缓存类型的缓存策略用于处理从缓存中淘汰的数据;
将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据。
实施第一方面所描述的方法,用户或者设备可以自行选择运用于第一实体产生的数据的缓存策略,在这一过程中,用户或设备可以根据实际需求灵活地选择缓存策略,不仅可以使得第一缓存策略组具有更多的灵活性,还可以提高第一缓存策略组对第一实体产生的数据的缓存效果。
在一种可能的实现方式中,将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据,包括:根据第一实体产生的数据的访问记录对第一缓存策略组进行优化,得到第二缓存策略组;将第二缓存策略组运用于第一实体产生的数据。
上述实现方式中,由于第二缓存策略组是根据第一实体产生的数据的访问记录对第一缓存策略组进行优化得到的,因此相较于第一缓存策略组,第二缓存策略组更适合处理第一实体产生的数据,也就是说,利用第二缓存策略组对第一实体产生的数据进行缓存可以达到更好的缓存效果,从而提高第一实体获取数据的速度。
在一种可能的实现方式中,缓存策略库的类型还包括专有类型,专有类型的缓存策略为用户设置的缓存策略。
上述实现方式中,用户可以自行设置所需的缓存策略,那么,第一缓存策略组可以具有更高的灵活性。
在一种可能的实现方式中,上述方法还包括:根据第二实体产生的数据的访问记录对第一缓存策略组进行优化,得到第三缓存策略组;将第三缓存策略组运用于第二实体产生的数据。
上述实现方式中,第一缓存策略组还可以用于对第二实体产生的数据进行处理,其中,第一实体产生的数据与第二实体产生的数据不同,因此,第一缓存策略组能够适用于不同实体产生的数据,具有良好的适应能力。
在一种可能的实现方式中,第一缓存策略组中的多个缓存策略是按照预设顺序排布的,当多个缓存策略包括专有类型的缓存策略时,专有类型的缓存策略的位置由用户设置。
上述实现方式中,用户还可以自行设置缓存策略的位置,那么,用户可以根据自身需求来设置第一缓存策略组,从而使得第一缓存策略组可以具有更高的灵活性。
在一种可能的实现方式中,在将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据之前,上述方法还包括:确定第一缓存策略组的合法性。
可以理解的,由于第一缓存策略组包括多个缓存策略,而多个缓存策略之间可能存在冲突,因此为了避免这种情况,在运用第一缓存策略组进行数据缓存之前,需要先对第一缓存策略组进行合法性检查。当第一缓存策略组合法的情况下,可以将其运用于第一实体产生的数据,当第一缓存策略组不合法的情况下,需要将其进一步调整为合法的缓存策略组,再运用于第一实体产生的数据。
在一种可能的实现方式中,多个缓存策略中的每个缓存策略对应一个策略属性集合,确定第一缓存策略组的合法性,包括:根据多个缓存策略对应的多个策略属性集合,确定第一缓存策略组的合法性;其中,一个缓存策略对应的策略属性集合包括第一属性、第二属性中的至少一个,第一属性用于确定第一缓存策略组中是否存在与上述一个缓存策略冲突的缓存策略,第二属性用于确定第一缓存策略组中能否包括多个上述一个缓存策略。
上述实现方式中,通过为每个缓存策略设置策略属性集合,可以更加方便地对第一缓存策略组的合法性进行确定。
在一种可能的实现方式中,根据第一实体产生的数据的访问记录对第一缓存策略组进行优化,得到第二缓存策略组,包括:在第一缓存策略组合法的情况下,根据第一实体产生的数据的访问记录,利用启发式算法或机器学习算法对第一缓存策略组中的每个缓存策略进行迭代优化,从而得到第二缓存策略组。
上述实现方式中,利用启发式算法或机器学习算法来优化第一缓存策略组中的每个缓存策略,可以提高优化速度,从而可以更快的获得第二缓存策略组。
第二方面,本申请提供了一种数据缓存装置,所述装置包括:
获取单元,用于从多个类型的缓存策略库中获取多个缓存策略,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个,过滤类型的缓存策略用于过滤数据,预取类型的缓存策略用于预取数据,替换类型的缓存策略用于从缓存中淘汰数据,牺牲缓存类型的缓存策略用于处理从缓存中淘汰的数据;
缓存单元,用于将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据。
在一种可能的实现方式中,缓存单元具体用于:根据第一实体产生的数据的访问记录对第一缓存策略组进行优化,得到第二缓存策略组;将第二缓存策略组运用于第一实体产生的数据。
在一种可能的实现方式中,缓存策略库的类型还包括专有类型,专有类型的缓存策略为用户设置的缓存策略。
在一种可能的实现方式中,缓存单元还用于:根据第二实体产生的数据的访问记录对第一缓存策略组进行优化,得到第三缓存策略组;将第三缓存策略组运用于第二实体产生的数据。
在一种可能的实现方式中,第一缓存策略组中的多个缓存策略是按照预设顺序排布的,当多个缓存策略包括专有类型的缓存策略时,专有类型的缓存策略的位置由用户设置。
在一种可能的实现方式中,上述装置还包括确定单元,确定单元用于:确定第一缓存策略组的合法性。
在一种可能的实现方式中,多个缓存策略中的每个缓存策略对应一个策略属性集合,确定单元具体用于:根据多个缓存策略对应的多个策略属性集合,确定第一缓存策略组的合法性;其中,一个缓存策略对应的策略属性集合包括第一属性、第二属性中的至少一个,第一属性用于确定第一缓存策略组中是否存在与上述一个缓存策略冲突的缓存策略,第二属性用于确定第一缓存策略组中能否包括多个上述一个缓存策略。
在一种可能的实现方式中,缓存单元具体用于:在第一缓存策略组合法的情况下,根据第一实体产生的数据的访问记录,利用启发式算法或机器学习算法对第一缓存策略组中的每个缓存策略进行迭代优化,从而得到第二缓存策略组。
第三方面,本申请提供了一种缓存设备,缓存设备包括处理器和存储器,处理器执行存储器中的代码以实现第一方面所描述的部分或全部步骤。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机指令,计算机指令用于实现第一方面所描述的部分或全部步骤。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,当计算机程序被计算设备读取并执行时,实现如第一方面所描述的部分或全部步骤。
附图说明
为了更清楚地说明本申请涉及的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请提供的一种ARC策略的示意图;
图1B是本申请提供的一种ARC策略自适应调整的原理示意图;
图2A是本申请提供的一种缓存策略选择界面的示意图;
图2B是本申请提供的另一种缓存策略选择界面的示意图;
图3是本申请提供的一种数据缓存方法的流程示意图;
图4A是本申请提供的一种缓存管理页面的示意图;
图4B是本申请提供的另一种缓存管理页面的示意图;
图5A是本申请提供的一种第一缓存策略组的示意图;
图5B是本申请提供的另一种第一缓存策略组的示意图;
图6是本申请提供的一种具体实施例的流程示意图;
图7是本申请提供的一种数据缓存装置的结构示意图;
图8是本申请提供的一种缓存设备的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解本申请提供的技术方案,首先介绍本申请涉及到的相关概念。
数据访问实体(以下简称为“实体”):是指访问数据,并对数据存储需求(即缓存需求)有所差异的数据使用者,例如,用户(组)、应用(组)、进程(组)、线程(组)等。本申请中的缓存需求可以理解为实体对存储在缓存中的数据的要求,即缓存中存储哪些数据时,缓存具备有效性。
缓存有效性:是指缓存是否有效,当缓存具备有效性时,实体可以从直接缓存中获取较多的被访问的数据,从而可以提高实体获取数据的速度。一般地,衡量缓存有效性的指标包括:缓存命中率、数据迁移量读、放大倍数。
缓存命中率:当实体访问数据时,如果缓存中存储了该数据,则实体可以从缓存中获取该数据,这就是命中,相反地,如果缓存中没有存储该数据,则实体需要从内存中获取该数据,这就是没有命中。那么,缓存命中率=命中的数量/(命中的数量+没有命中的数量),可以看出,缓存命中率越高,表示缓存的使用率越高,即被访问的数据大部分都是从缓存中获取到的。
数据迁移量:是指缓存数据的迁移量。为了加快存储系统的性能,通常会根据数据的重要性、访问频率、保留时间、容量、性能等指标,将数据采取不同的存储方式分别存储在不同性能的存储设备上,也就是通过分级存储的方式将不经常被访问的数据自动迁移到存储层次中较低的层次,从而释放出较高成本的存储空间给被频繁访问的数据。那么,当数据迁移量越大时,意味着缓存中存储了大量的不被经常访问的数据,这将增加数据迁移的成本以及存储系统的负担。值得注意的一点时,“数据迁移量”可以具有不同的名称,例如,不同标准或者同一标准的不同版本、不同厂商、不同应用场景对“数据迁移量”可以具有不同的称呼,例如,缓存开销等。
读放大倍数:对于一个数据来说,如果缓存策略判断该数据符合缓存需求,则会从内存中读取该数据,并复制到缓存,这时该数据相当于被读取2次。接下来,当缓存已满时,如果缓存策略判断该数据不符合缓存,则会从缓存中淘汰该数据,当该数据再次被访问时,缓存策略又会认为该数据符合缓存需求,那么又会将该数据从内存复制到缓存,这时该数据又被读取了2次。那么,当一个数据的读放大倍数越大,意味着该数据被从缓存中反复淘汰,该缓存的缓存效果较差。值得注意的一点是,“读放大倍数”可以具有不同的名称,例如,不同标准或者同一标准的不同版本、不同厂商、不同应用场景对“读放大倍数”可以具有不同的称呼,例如,缓存载入量等。
数据访问模式:是指实体访问数据的方式,例如,最近访问(recency)模式和频繁访问(frequency)模式,最近访问模式是指实体总是访问最近被访问过的数据,频繁访问模式是指实体总是访问历史访问频率较高的数据。可以理解的,为了提高缓存有效性,缓存中的数据应符合数据访问模式的要求,例如,如果实体采用最近访问模式,那么缓存中应存储最近被访问过的数据,如果实体采用频繁访问模式,那么缓存中应存储历史访问频率较高的数据。换句话说,用于处理实体产生的数据的缓存策略应适应于数据访问模式,这样才能满足缓存需求,从而提高缓存的有效性。
为了便于理解本申请提供的技术方案,首先介绍本申请适用的应用场景:缓存场景。
缓存(cache)是指位于速度相差较大的两种硬件(例如,处理器与内存、内存与硬盘、硬盘与网络等)之间,用于协调二者数据传输速度差异的结构,以达到提高数据读取性能的效果。不难理解,当用户频繁访问一个数据时,如果该数据每次都是从内存中提取到的,那么用户每次访问时都需要等待较长的时间才能获得该数据。而缓存的出现有效地解决了该问题,具体地,将被频繁访问的数据复制到缓存,使得用户后续访问该数据时,都可以直接从缓存中读取该数据,从而提高数据读取的速度。
简单地说,缓存是一个用于存储被频繁访问的数据的存储区。但是,随着时间的推移,被频繁访问的数据可能随之变化,也就是说,前一段时间被频繁访问的数据此时可能不被访问,而前一段间不被频繁访问的数据此时可能被频繁访问,那么如何确定哪些数据属于被频繁访问的数据?另外,当缓存空间被占满时,如果存在新的数据需要被复制到缓存,那么此时缓存中应保留哪些数据,删除哪些数据?因此,需要设计一个缓存策略来管理缓存,以保证缓存的有效性。
值得注意的一点是,“缓存策略”可以具有不同的名称。例如,不同标准或者同一标准的不同版本、不同厂商、不同应用场景对“缓存策略”可以具有不同的称呼,例如,术语“缓存策略”有时也可以被称为“缓存方法”、“缓存算法”等。
对于一个实体来说,合适的缓存策略是提高该实体获取数据的速度的关键,但实际应用中,由于不同实体对应的数据访问模式可能不同,因此不同实体对应的缓存需求也可能不同,那么,适合处理不同实体产生的数据的缓存策略也要有所不同。不难理解,如果对每个实体都设计一个合适的缓存策略,这将耗费大量的资源。因此,为了适应不同用户的数据访问模式,如何构建出灵活且适应能力强的缓存策略,以用于提高缓存的有效性仍然是当前缓存技术领域中的一个亟需解决的问题。
目前,常见的缓存策略方案包括单一自适应策略方案和混合缓存策略方案,具体如下:
(1)单一自适应策略方案
单一自适应策略方案:是指为不同的实体配置同一个缓存策略,然后在实际运用过程中根据各个实体的数据访问情况对该缓存策略进行改良,使其能够适应于不同实体采用的不同数据访问模式。比如说,Megiddo和Modha提出的具有一定自适应能力的缓存算法(adaptive replacement cache,ARC)就是一种典型的单一自适应策略,这种缓存策略融合了最近最少使用(least recently used,LRU)算法的思想(即,如果一个数据在最近一段时间内未被访问过,那么可以认为这个数据在将来被访问的可能性也很小)和最不经常使用(least frequently used,LFU)算法的思想(即,如果一个数据在最近一段时间内很少被访问,那么可以认为这个数据在将来被访问的可能性也很小)。因此,ARC策略适合处理采用最近访问模式的实体产生的数据,或者采用频繁访问模式的实体产生的数据。
如图1A所示,图1A示出了一种ARC策略的示意图。从图中可以看出,ARC策略具体包括LRU链表、LFU链表、用于存储从LRU链表中淘汰的数据的信息的链表(Ghost LRU链表)、用于存储从LFU链表中淘汰的数据的信息的链表(Ghost LFU链表)。其中,LRU链表和LFU链表用于存储数据,具体地,LRU链表存储的是最近最多使用的数据,LFU链表存储的是最近最频繁使用的数据;而Ghost LRU链表和Ghost LFU链表中不存储数据,存储的是数据的信息(例如,偏移量(offset))。
在实际应用过程中,ARC策略会根据这四个链表的命中情况,动态调整LRU链表和LFU链表的长度,从而使得ARC策略具有适应能力。具体地,如果LRU链表和Ghost-LRU链表的命中率较高,则增加LRU链表的长度,如果LFU链表和Ghost-LFU链表的命中率较高,则增加LFU链表的长度。举例说明,如图1B所示,在LRU链表已满的情况下,如果需要向LRU链表中再写入一个数据A,则LRU链表中最近最少被访问的数据B将会被淘汰,并且数据B会被放入Ghost-LRU队列。假设一段时间后,数据B被再一次访问,这时Ghost-LRU队列被命中,在这种情况下,会将LRU链表的长度加1,对应的,LFU链表的长度减1。
可以看出,ARC策略的适应能力是基于链表的命中情况,在LRU算法和LFU算法之间进行切换而实现的,因此ARC策略仅能适应于最近访问模式和频繁访问模式,这也就导致ARC策略具备的适应能力有限,难以满足除上述两种数据访问模式对应的缓存需求外的其他缓存需求。类似的,其他的单一自适应策略也存在灵活度和适应能力有限的问题。总的来说,单一自适应策略通常存在灵活性和适应能力较差的问题,从而难以满足众多不同的缓存需求。
(2)混合缓存策略方案
混合缓存策略方案:提供有候选策略集合,对于不同的实体,可以从候选策略集合中选择相应的缓存策略来处理对应实体产生的数据。目前,混合缓存策略为云存储、内容分发网络(content delivery network,CDN)等领域中最为常用的缓存策略。
在一种可能的实现方式中,该方案提供有缓存策略选择界面,该界面向用户展示了候选策略集合,使得用户可以自行选择合适的缓存策略。如图2A示出的缓存策略选择界面中,提供有缓存策略的选择选项,用户可以根据实体对应的数据访问模式选择相应的一个或多个缓存策略。除缓存策略的选择选项外,缓存策略选择界面还可以提供缓存策略的配置选项,使得用户可以方便地为指定的文件选择缓存策略,以图2B示出的缓存策略选择界面为例,用户可以在配置选项中输入“.txt”,并为文件后缀为“.txt”的文件选择缓存策略1,从而实现利用缓存策略1来处理文件后缀为“.txt”的文件中的数据。
在另一种可能的实现方式中,通过分析实体对应的数据访问模式,然后根据实体的数据访问模式,从候选策略集合中选择出适应于该实体对应的数据访问模式的缓存策略。
可以看出,该方案中候选策略集合中的缓存策略越丰富,越能从中挑选出更合适的缓存策略。但是,如何构建出包括海量缓存策略的候选策略集合,本身就是一个难以实现的工作,这将导致该方案也无法满足众多不同的缓存需求。
为了解决上述问题,本申请提供了一种数据缓存方法,能够构建出灵活度高且适应能力强的缓存策略组,从而提高缓存的有效性。下面,将结合图3-图6对本申请提供的数据缓存方法进行详细介绍。
首先,请参见图3,图3示出了本申请提供的一种数据缓存方法的流程示意图,该方法包括但不限于如下步骤:
S101:缓存设备从多个类型的缓存策略库中获取多个缓存策略。
在一具体的实施例中,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个。可选的,缓存策略库的类型还包括专有类型。下面对各个类型的缓存策略库及其包括的缓存策略进行介绍:
过滤类型的缓存策略库(以下简称为过滤策略库)包括一个或多个过滤类型的缓存策略(以下简称为过滤策略),过滤策略用于过滤数据,例如,处理器在执行人脸识别的程序时,会产生人脸图像、人脸特征、人脸识别结果等大量的数据,过滤策略可以将人脸图像、人脸特征等数据滤除。本申请中,过滤类型的缓存策略库中包括的过滤策略可以是双边滤波算法(double filter)、布隆滤波算法(bloom filter)等经典的滤波算法,也可以是用户自定义的过滤规则,例如,用户通过自定义的方式将文件名后缀为“.jpg”的文件过滤,本申请对此不作具体限定。
预取类型的缓存策略库(以下简称为预取策略库)包括一个或多个预取类型的缓存策略(以下简称为预取策略),预取策略用于预取数据,具体地说,预取策略用于预测实体将要访问的数据,并将预测得到的数据提前存储到缓存中,那么,当实体访问到这些数据时,便能直接从缓存中获得,从而提高实体访问效率。例如,处理器执行一个循环指令时,预取策略可以根据处理器已经执行该循环指令的次数,预测出下一次执行循环指令时所需的数据,并将处理器下一次执行循环指令时所需的数据提前存储到缓存中。本申请中预取类型的缓存策略库中包括的预取策略可以是预读算法(readahead),自适应预读算法(adaptive readahead)、智能预取算法(smart prefetcher)等,也可以是用户自定义的预取规则,此处不作具体限定。
替换类型的缓存策略库(以下简称为替换策略库)包括一个或多个替换类型的缓存策略(以下简称为替换策略),替换策略用于从缓存中淘汰数据,本申请中,替换类型的缓存策略库中包括的替换策略可以是LRU、LFU、ARC等,也可以是用户自定义的替换规则,此处不作具体限定。
牺牲缓存类型的缓存策略库(以下简称为牺牲缓存策略库)包括一个或多个牺牲缓存类型的缓存策略(以下简称为牺牲缓存策略),牺牲缓存策略用于处理从缓存中淘汰的数据。可以理解的,由于从缓存中淘汰的数据仍然可能被再次访问,在这种情况下,实体需要重新从内存中获得被淘汰的数据,为了减少这一过程造成的损失,通过牺牲缓存策略可以将被淘汰的数据暂时存储到牺牲缓存(victim cache)中,然后根据后续被访问的概率确定是否从牺牲缓存中淘汰该数据,也就是说,牺牲缓存策略可以将从缓存中被淘汰但后续被访问概率大的数据存储到牺牲缓存中,使得实体再次访问被淘汰的数据时,可以直接从牺牲缓存中获取该数据。
专有类型的缓存策略库(以下简称为专有策略库)包括一个或多个专有类型的缓存策略(以下简称为专有策略),专有策略为用户设置的缓存策略,具体可以是用于根据实体的数据访问行为而专门定制的策略,例如,实体访问数据库时,每次都是按照数据库的行号来提取数据,因此,用户可以设置一个根据数据库的行号来提取相关数据的专有策略。
可选的,多个类型的缓存策略库可以都配置在缓存设备中,也可以都配置在其他电子设备或系统中,还可以部分配置在缓存设备中,部分配置在其他电子设备或系统中,此处不作具体限定。
可选的,从多个类型的缓存策略库获取的多个缓存策略的类型可以都不相同,也可以全都相同,还可以一部分相同,一部分不同,此处不作具体限定。可选的,上述多个缓存策略可以包括多个相同的缓存策略,上述多个缓存策略也可以是多个不同的缓存策略,此处不作具体限定。具体实现中,缓存设备可以通过以下几种方式从多个类型的缓存策略库中获取多个缓存策略。
方式一,缓存设备获取用户从多个类型的缓存策略库中选取的多个缓存策略。
具体地,多个类型的缓存策略库可以以缓存管理页面的形式向用户进行展示,以图4A为例,缓存管理页面上显示了5个类型的缓存策略库,包括:过滤策略库、预取策略库、替换策略库、牺牲缓存策略库以及专有策略库,其中,过滤策略库包括3个过滤策略,预取策略库包括4个预取策略,替换策略库包括5个替换策略,牺牲缓存策略库包括2个牺牲缓存策略,专有策略库包括2个专有策略。那么,用户可以通过缓存管理页面清楚地获知有哪些类型的缓存策略库,以及有哪些缓存策略可供选择,而且,用户还可以在缓存管理页面上进行操作,从而选择出上述多个缓存策略。
可选的,缓存管理页面上还可以显示配置选项,以方便用户可以定义利用缓存策略对哪些数据进行处理、处理后的数据缓存到什么地方以及缓存时间、缓存优先级等。以图4B为例,用户通过在缓存管理页面上的配置选项中输入目录A,则缓存设备会利用选择出多个缓存策略对目录A中的数据进行处理。
可选的,用户可以随机地从多个类型的缓存策略库中选取出多个缓存策略,也可以通过分析第一实体的数据访问模式(具体可以是第一实体产生的数据的访问记录),从而在多个类型的缓存策略库中选取出多个缓存策略,还可以通过其他方式从多个类型的缓存策略库中选取出多个缓存策略,本申请对此不作具体限定。
方式二,缓存设备从多个类型的缓存策略库中选取多个缓存策略。
可选的,缓存设备可以随机地从多个类型的缓存策略库中选取出多个缓存策略,也可以通过分析第一实体的数据访问模式(具体可以是第一实体产生的数据的访问记录),从而在多个类型的缓存策略库中选取出多个缓存策略,还可以根据下发的配置文件从多个类型的缓存策略库中选取出多个缓存策略等,本申请对此不作具体限定。其中,配置文件包括以下一个或多个:选取的缓存策略的总数量、选取哪些类型的缓存策略、选取每种类型的缓存策略的数量、具体选取哪个缓存策略。
方式三,缓存设备还可以通过将方式一和方式二进行结合,从而获取多个缓存策略,即一部分缓存策略为用户选取的,另一部分缓存策略为缓存设备选取的。
通过上述方法,用户或者缓存设备可以根据实际需求灵活地选择缓存策略,这使得第一缓存策略组能够更加符合用户的要求,例如,当存储系统中没有配置牺牲缓存时,可以不选择牺牲缓存策略,又例如,当需要将从缓存中淘的数据先进行过滤再存入牺牲缓存时,用户可以设置一个专有策略来达到该目的。而且,第一缓存策略组中缓存策略的类型、每种类型的缓存策略的数量等都是可以根据实际情况进行相应调整的,这使得第一缓存策略组具有多种可能性。不难理解,相较于前述内容中提及的单一自适应策略和候选策略集合,利用上述方法可以容易地扩展出更多的缓存策略组,从而提供更多的选择,也就是能够满足更多的缓存需求。
S102:缓存设备将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据。
在一具体的实施例中,第一缓存策略组中的多个缓存策略是按照预设顺序排布的。当多个缓存策略包括专有策略时,专有策略的位置由用户设置。
更具体地,当多个缓存策略包括过滤策略、预取策略、替换策略、牺牲缓存策略以及专有策略时,预设顺序为:过滤策略排布在预取策略之前,预取策略排布在替换策略之前,替换策略排布在牺牲缓存策略之前,专有策略的位置由用户设置,也就是说,专有策略可以排布于任一策略之前或之后。可以理解的,用户通过指定专用策略的位置,可以使得第一缓存策略组更加符合缓存需求,从而可以获得更好的缓存效果。
在一具体的实施例中,当上述多个缓存策略中包括两个或两个以上类型相同的缓存策略时,预设顺序还可以定义这些类型相同的缓存策略的顺序。以图4A示出的缓存策略为例,预设顺序定义了过滤策略1排布在过滤策略2之前,过滤策略3排布在过滤策略1之前。那么,当多个缓存策略包括过滤策略1、过滤策略2、预取策略4、替换策略3、牺牲缓存策略1以及专有策略2时,缓存设备可以根据预设顺序将这些缓存策略进行排布,从而得到如图5A所示的第一缓存策略组。可选的,预设顺序中也可以不定义类型相同的缓存策略之间的排布顺序,继续以上述例子为例,当预设顺序中没有定义过滤策略1和过滤策略2之间的排布顺序时,缓存设备将会得到如图5A和图5B示出的2个第一缓存策略组。
在一具体的实施例中,为了方便缓存设备将多个缓存策略进行排布,多个缓存策略中的每个缓存策略除包括策略本身的算法描述外,还包括策略属性的描述,简单地说,就是利用算法描述和策略属性描述来共同描述一个缓存策略。具体地,上述多个缓存策略中的每个缓存策略对应一个策略属性集合,策略属性集合包括缓存策略的类型,缓存策略的类型具体可以是步骤S101中提到的过滤类型、预取类型、替换类型、牺牲缓存类型、专有类型中的任一种。那么,缓存设备可以根据多个缓存策略中每个缓存策略的类型,将多个缓存策略按照预设顺序进行排布,从而得到第一缓存策略组。此处需要说明的一点是,本申请中一个缓存策略仅对应一个策略类型,以便于缓存设备可以根据缓存策略的类型将多个缓存策略进行排布。
可选的,第一缓存策略组还可以是这样得到的:缓存设备获取上述多个缓存策略之后,将这些缓存策略存储到某个预设的文件中,然后将该文件命名为第一缓存策略组。
本申请中,考虑到不同缓存策略之间可能存在不兼容的问题,比如说,过滤策略1用于过滤数据A,而预取策略4用于将数据A放入缓存,那么,过滤策略1与预取策略4之间不兼容,这意味着过滤策略1与预取策略4相互冲突,如果同时运用过滤策略1与预取策略4,会造成过滤策略1或者预取策略4失效,从而导致第一缓存策略组的部分功能失效。为了避免这种情况,在一具体的实施例中,缓存设备将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据之前,缓存设备还需确定第一缓存策略组的合法性,即检查多个缓存策略之间是否存在不兼容问题。
在一具体的实施例中,缓存设备根据确定第一缓存策略组的合法性,包括:缓存设备根据多个缓存策略对应的多个策略属性集合,确定第一缓存策略组的合法性;其中,每个缓存策略的策略属性集合还包括第一属性、第二属性中的至少一个,第一属性用于确定第一缓存策略组中是否存在与该缓存策略冲突的缓存策略,第二属性用于确定第一缓存策略组中能否包括多个该缓存策略。
需要说明的,由于不同的替换策略之间通常都会存在不兼容的情况,如果将不兼容的替换策略组合在一起,会导致其中的某一个替换策略失效,比如说,LRU用于淘汰最近被访问最少的数据,LFU用于淘汰最近被访问最不频繁的数据,如果第一缓存策略组同时包括LRU和LFU,假设缓存中的某一数据为最近20分钟被访问次数最多数据,但该数据也是最近2个小时被访问最不频繁的数据,在这种情况下,依据LRU不应将该数据淘汰,但依据LFU却要将该数据淘汰。因此,替换策略的第一属性可以设置为与其他替换策略不兼容,第二属性可以设置为一个,以表示第一缓存策略组仅能包括一个替换策略。而牺牲缓存策略主要作用于被替换策略淘汰的数据,因此,当替换策略为一个时,牺牲缓存策略一般也只需要一个。因此,牺牲缓存策略的第一属性可以设置为与其他牺牲缓存策略不兼容,第二属性可以设置为一个。还需说明的,第一缓存策略组中可以包括多个相同的缓存策略,例如,假设实体先按照数据库的行号预取数据,再按照数据库的列号预取数据,再按照数据库的行号预取数据,那么,可以依次执行预取策略1、预取策略2和预取策略1来实现上述过程,在这种情况下,第一缓存策略组就需要2个预取策略1,预取策略1的第二属性可以设置为多个。
在一具体的实施例中,当第一缓存策略组中的多个缓存策略是按照预设顺序排布的,上述每个缓存策略对应的策略属性集合可以具体包括前置条件、后置条件、第一属性、第二属性中的至少一个。其中,一个缓存策略的前置条件是指排布在该缓存策略前的缓存策略应满足的条件,和/或,排布在该缓存策略前的缓存策略不应满足的条件,以使得缓存设备可以根据前置条件判断第一缓存策略组中该缓存策略与其前面的缓存策略是否冲突。后置条件是指排布在该缓存策略后的缓存策略应满足的条件,和/或,排布在该缓存策略后的缓存策略不应满足的条件,以使得缓存设备可以根据后置条件判断第一缓存策略组中该缓存策略与其后面的缓存策略是否冲突。以图5A所示的第一缓存策略组为例,假设过滤策略1的后置条件为过滤数据A,或预取策略4的前置条件为将数据A放入缓存,在这种情况下,缓存设备确定第一缓存策略组不合法。
可选的,缓存设备还可以根据前置条件、后置条件、第一属性或第二属性中的至少一个来,从多个类型的缓存策略库中选取多个缓存策略。以上述例子中替换策略的第一属性为例,缓存设备根据替换策略的第一属性,会只选择一个替换策略。又例如,假设预取策略4的前置条件为预取策略4应与过滤策略2同时使用,那么,当缓存设备选取了预取策略4之后,便会选择过滤策略2。
在一具体的实施例中,缓存设备将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据,包括:缓存设备根据第一实体产生的数据的访问记录对第一缓存策略组进行优化,得到第二缓存策略组;然后,将第二缓存策略组运用于第一实体产生的数据。可以理解的,通过上述步骤可以得到更适应于满足第一实体的数据访问模式的第二缓存策略组,从而提高缓存的有效性。
在一具体的实施例中,缓存设备根据第一实体产生的数据的访问记录对第一缓存策略组进行优化,得到第二缓存策略组,包括:在第一缓存策略组合法的情况下,缓存设备根据第一实体产生的数据的访问记录,利用启发式算法或机器学习算法对所述第一缓存策略组中的每个缓存策略进行迭代优化,从而得到所述第二缓存策略组。该步骤的具体内容将通过后文的步骤S1021-S1025进行详细叙述。可以理解的,利用启发式算法或机器学习算法来优化第一缓存策略组中的每个缓存策略,可以提高优化速度,从而使得缓存设备可以更快的获得第二缓存策略组,并运用于第一实体产生的数据。
在一具体的实施例中,缓存设备还可以将包括多个缓存策略的第一缓存策略组运用于第二实体产生的数据,其中,第一实体产生的数据与第二实体产生的数据不同。该步骤的具体过程包括:缓存设备根据第二实体产生的数据的访问记录对第一缓存策略组进行优化,得到第三缓存策略组;然后,将第三缓存策略组运用于所述第二实体产生的数据。可以理解的,缓存设备将第一缓存策略组运用于第二实体产生的数据的具体过程与将第一缓存策略组运用于第一实体产生的数据的具体过程类似,为了简便,此处不再展开详细赘述。可以看出,本申请提供的第一缓存策略组能够适用于不同实体产生的数据,也就是说,第一缓存策略组具有良好的适应能力。
下面将结合步骤S1021-S1025对前述步骤S102中缓存设备优化第一缓存策略组,从而得到第二缓存策略组的具体过程进行进一步地描述。
S1021:采集第一实体产生的数据的访问记录。
S1022:对第一实体产生的数据的访问记录进行预处理,从而去除第一实体产生的数据中的异常数据。
在一具体的实施例中,预处理的方式包括过滤、清洗等,异常数据包括不完整数据(包括截断数据、删失数据、缺失数据等)、时间戳错误的数据,地址超过地址区间的数据等。
S1023:根据预处理后的数据的访问记录,分析并评估第一缓存策略组的缓存效果。
具体实现中,将预处理后的数据输入到第一缓存策略组,经过第一缓存策略组的处理后,得到当前缓存中存储的数据,然后,再根据预处理后的数据的访问记录,确定当前缓存对应的缓存指标,从而进一步确定第一缓存策略组的缓存效果。其中,缓存指标是指衡量当前缓存的有效性的指标。可以理解的,缓存越有效,说明对应的缓存策略的缓存效果越好,因此,可以根据当前缓存对应的缓存指标来确定第一缓存策略组的缓存效果。可选的,缓存指标包括缓存命中率、缓存迁移量、读放大倍数中的至少一个,其中,缓存命中率、缓存迁移量、读放大倍数的定义可参见前述内容中的相关概念的介绍。
以缓存命中率为例,根据预处理后的数据的访问记录,确定当前缓存对应的缓存指标的具体过程为:首先,确定当前缓存中存储了预处理后的数据中的哪些数据,从而得到缓存命中的数量以及缓存没有命中的数量,然后,根据缓存命中的数量和缓存没有命中的数量计算得到当前缓存的缓存命中率。
S1024:根据第一缓存策略组的缓存效果,确定是否需要对第一缓存策略组进行优化。
在一具体的实施例中,当缓存指标不满足预设指标时,缓存设备确定需要对第一缓存策略组进行优化。当缓存指标满足预设指标时,缓存设备可以不对第一缓存策略组进行优化。其中,缓存指标满足预设指标包括以下一个或多个:缓存命中率大于预设命中率,缓存迁移量小于预设迁移量、读放大倍数小于预设倍数。预设命中率、预设迁移量以及预设倍数可以是用户设置的,也可以是缓存设备根据实际情况进行动态调整得到的,此处不作具体限定。
可以理解的,当缓存指标满足预设指标时,意味着缓存是有效的,也就是说,利用第一缓存策略组对第一实体产生的数据进行缓存时可以获得满意的缓存效果,因此为了节约资源,缓存设备可以不用对第一缓存策略组进行优化。相反的,当缓存指标不满足预设指标时,意味着缓存不具备有效性,此时需要对第一缓存策略组进行优化,从而提高缓存的有效性。
S1025、在第一缓存策略组需要进行优化的情况下,根据预处理后的数据的访问记录,对第一缓存策略组进行优化,从而得到第二缓存策略组。
在一更具体的实施例中,考虑到第一缓存策略组包括多个缓存策略,因此,第一缓存策略组的优化过程属于多目标优化问题,又由于多目标优化问题会涉及到各个子目标(此处为各个缓存策略)之间的相互制约,也就是说,一个子目标的优化可能会引起其他子目标的性能降低,因此,本申请利用启发式算法(heuristic algorithm)(例如,进化算法)或机器学习算法(例如,强化学习算法)来优化第一缓存策略组,以使得第一缓存策略组中的各个缓存策略都尽可能达到最优化。
下面遗传算法以为例,对第一缓存策略组的优化过程进行叙述。
遗传算法(genetic algorithm,GA)是一种具有高鲁棒性和广泛适应性的进化算法,通过模拟自然选择和遗传中发生的复制、交叉和变异等现象,使群体可以进化到搜索空间中越来越好的区域,从而可以产生一群最适应应用场景的个体。
假设,第一缓存策略组包括K个缓存策略,K为正整数,缓存设备利用遗传算法优化第一缓存策略组的具体过程为:首先,将第一缓存策略组看作一个群体,将第一缓存策略组中的每个缓存策略都看作一个待优化的个体,并对每个待优化的个体进行编码(即对缓存策略的参数进行编码),然后,随机生成K个串结构的数据,每个串结构的数据表示一个待优化的个体,从而得到初始群体数据,接下来,以初始化群体数据为搜索点,计算每个待优化的个体的适应度,并将当前群体中适应度大于预设适应度的个体遗传到下一代群体,然后,通过交叉运算和变异算法产生新个体,从而得到新一代群体,然后确定新一代群体对应的缓存策略组的缓存指标,当新一代群体对应的缓存策略组的缓存指标大于预设阈值时,迭代执行上述优化过程,直到优化后的缓存策略组的缓存指标小于或等于预设阈值时,停止迭代,从而得到第二缓存策略组。
下面,通过一个具体的例子来进一步说明本申请提供的第一缓存策略组以及利用第一数据缓存方法,具体包括如下步骤,如图6所示:
步骤①:对当前应用于实体产生的数据的缓存策略的缓存效果进行评估。
具体地,监控当前缓存对应的缓存指标,如果当前缓存对应的缓存指标大于预设阈值,说明当前的缓存策略的缓存效果较好,接下来仍可以使用当前的缓存策略。如果当前缓存对应的缓存指标小于或等于预设阈值,意味着当前的缓存中存储了大量不符合缓存需求的数据,也就说明当前的缓存策略的缓存效果较差,接下来需要执行步骤②-步骤⑥来构建能够满足实体缓存需求的缓存策略。
步骤②:采集实体产生的数据的访问日志。
步骤③:为实体构建对应的缓存策略组。
步骤④:对步骤③构建出的缓存策略组进行合法性检测,并在缓存策略组合法的情况下,对其进行缓存效果的评估。
步骤⑤:当缓存策略组的缓存效果没有达到预设效果(即缓存指标不满足预设指标)时,根据实体产生的数据的访问日志,对缓存策略组进行迭代优化,直至得到一个缓存效果达到预设效果的新的缓存策略组。
步骤⑥:将步骤⑤得到新的缓存策略组应用到存储系统,以用于处理实体产生的数据,从而达到更好的缓存效果,并进一步提高实体获取数据的速度。
可选的,还可以省略步骤1,通过定期执行步骤2-步骤6来优化实体对应的缓存策略,使得缓存策略能够更加适应实体的缓存需求。
应理解,为了简便,上述例子并没有对每个步骤的具体实现方式进行详细叙述,具体可参见上述方法实施例,此处不再展开赘述。
前述内容详细阐述了本申请的方法,为了更好地实施本申请提供的方法,接下来将介绍本申请提供的用于配合实施上述方法的相关装置和设备。
如图7所示,图7示出了本申请提供的一种数据缓存装置的结构示意图,该装置100包括获取单元110、缓存单元120。
获取单元110,用于从多个类型的缓存策略库中获取多个缓存策略,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个,过滤类型的缓存策略用于过滤数据,预取类型的缓存策略用于预取数据,替换类型的缓存策略用于从缓存中淘汰数据,牺牲缓存类型的缓存策略用于处理从缓存中淘汰的数据。
缓存单元120,用于将包括多个缓存策略的第一缓存策略组运用于第一实体产生的数据。
在一具体的实施例中,缓存单元120具体用于:根据第一实体产生的数据的访问记录对第一缓存策略组进行优化,得到第二缓存策略组;将第二缓存策略组运用于第一实体产生的数据。
在一具体的实施例中,缓存策略库的类型还包括专有类型,专有类型的缓存策略为用户设置的缓存策略。
在一具体的实施例中,缓存单元120还用于:根据第二实体产生的数据的访问记录对第一缓存策略组进行优化,得到第三缓存策略组;将第三缓存策略组运用于第二实体产生的数据。
在一具体的实施例中,第一缓存策略组中的多个缓存策略是按照预设顺序排布的,当多个缓存策略包括专有类型的缓存策略时,专有类型的缓存策略的位置由用户设置。
在一具体的实施例中,数据缓存装置100还包括确定单元130,确定单元130用于:确定第一缓存策略组的合法性。
在一具体的实施例中,多个缓存策略中的每个缓存策略对应一个策略属性集合,确定单元130具体用于:根据多个缓存策略对应的多个策略属性集合,确定第一缓存策略组的合法性;其中,一个缓存策略对应的策略属性集合包括第一属性、第二属性中的至少一个,第一属性用于确定第一缓存策略组中是否存在与上述一个缓存策略冲突的缓存策略,第二属性用于确定第一缓存策略组中能否包括多个上述一个缓存策略。
在一具体的实施例中,缓存单元120具体用于:在第一缓存策略组合法的情况下,根据第一实体产生的数据的访问记录,利用启发式算法或机器学习算法对第一缓存策略组中的每个缓存策略进行迭代优化,从而得到第二缓存策略组。
本申请实施例的数据缓存装置100仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据缓存装置100的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据缓存装置100与上述方法实施例中的缓存设备属于同一构思,其具体实现过程详见上述方法实施例,例如,获取单元110从多个类型的缓存策略库中获取多个缓存策略的过程具体请参见上述步骤S101,缓存单元120优化第一缓存策略组的过程具体请参见上述步骤S1021-S1025,这里不再赘述。
如图8所示,图8示出了本申请提供的一种缓存设备的结构示意图,缓存设备200包括处理器210、通信接口220和存储器230。其中,处理器210、通信接口220以及存储器230通过总线240进行耦合。
处理器210可以是中央处理器(central processing unit,CPU),通用处理器、DSP、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件(programmablelogic device,PLD)、CPLD、晶体管逻辑器件、硬件部件或者其任意组合。处理器210可以实现或执行结合上述方法实施例中所描述的各种示例性的方法。具体的,处理器210读取存储器230中存储的程序代码,并与通信接口220配合执行S101-S102、S1021-S1025以及步骤①-⑥的部分或者全部步骤。
通信接口220可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、控制器局域网络接口、局域互联网络(local interconnectnetwork,LIN)以及FlexRay接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。具体的,通信接口220可以与其他设备连接,例如,通信接口220可以与存储系统相连,当处理器210得到第一缓存策略组之后,通过通信接口220可以将第一缓存策略发送给存储系统,以用于处理第一实体产生的数据。
存储器230可以包括易失性存储器,例如随机存取存储器(random accessmemory,RAM);存储器230也可以包括非易失性存储器,例如只读存储器(read onlymemory,ROM)、快闪存储器、硬盘(hard disk drive,HDD)或固态硬盘(solid state drive,SSD),存储器230还可以包括上述种类的存储器的组合。存储器230可以存储有程序代码以及程序数据。其中,程序代码由图7示出的数据缓存装置100中的部分或者全部单元的代码组成,例如,获取单元110的代码、缓存单元120的代码以及确定单元130。程序数据由图7示出的数据缓存装置100在运行程序的过程中产生的数据,例如,第一实体产生的数据、缓存策略等。
总线240可以是控制器局域网络(controller area network,CAN)或其他实现内部总线。总线240可以分为地址总线、数据总线、控制总线等。为了便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例中的缓存设备200用于执行上述方法实施例中的缓存设备执行的方法,与上述方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机指令在计算设备(例如,图7示出的数据缓存装置100或图8示出的缓存设备200)上运行时,使得计算设备执行上述方法实施例中的缓存设备执行的方法。
本申请还提供了一种计算机程序产品,包括计算机程序,当计算机程序被计算设备(例如,图7示出的数据缓存装置100或图8示出的缓存设备200)读取并执行时,用于实现上述方法实施例中的缓存设备执行的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(如,同轴电缆、光纤、数字用户线)或无线(如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(如,软盘、存储盘、磁带)、光介质(如,DVD)、或者半导体介质(如,SSD)等。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,也可以通过其它的方式实现。例如以上所描述的装置实施例仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可结合或者可以集成到另一个系统,或一些特征可以忽略或不执行。另一点,所显示或讨论的相互之间的间接耦合或者直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例的方案的目的。
另外,在本申请各实施例中的各功能单元可集成在一个处理单元中,也可以是各单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质例如可包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或光盘等各种可存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (18)
1.一种数据缓存方法,其特征在于,所述方法包括:
从多个类型的缓存策略库中获取多个缓存策略,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,所述缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个,所述过滤类型的缓存策略用于过滤数据,所述预取类型的缓存策略用于预取数据,所述替换类型的缓存策略用于从缓存中淘汰数据,所述牺牲缓存类型的缓存策略用于处理从所述缓存中淘汰的数据;
将包括所述多个缓存策略的第一缓存策略组运用于第一实体产生的数据。
2.根据权利要求1所述的方法,其特征在于,所述将包括所述多个缓存策略的第一缓存策略组运用于第一实体产生的数据,包括:
根据所述第一实体产生的数据的访问记录对所述第一缓存策略组进行优化,得到第二缓存策略组;
将所述第二缓存策略组运用于所述第一实体产生的数据。
3.根据权利要求1或2所述的方法,其特征在于,所述缓存策略库的类型还包括专有类型,所述专有类型的缓存策略为用户设置的缓存策略。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
根据第二实体产生的数据的访问记录对所述第一缓存策略组进行优化,得到第三缓存策略组;
将所述第三缓存策略组运用于所述第二实体产生的数据。
5.根据权利要求3所述的方法,其特征在于,所述第一缓存策略组中的多个缓存策略是按照预设顺序排布的,当所述多个缓存策略包括所述专有类型的缓存策略时,所述专有类型的缓存策略的位置由所述用户设置。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述将包括所述多个缓存策略的第一缓存策略组运用于第一实体产生的数据之前,所述方法还包括:
确定所述第一缓存策略组的合法性。
7.根据权利要求6所述的方法,其特征在于,所述多个缓存策略中的每个缓存策略对应一个策略属性集合,所述确定所述第一缓存策略组的合法性,包括:
根据所述多个缓存策略对应的多个策略属性集合,确定所述第一缓存策略组的合法性;
其中,一个缓存策略对应的策略属性集合包括第一属性、第二属性中的至少一个,所述第一属性用于确定所述第一缓存策略组中是否存在与所述一个缓存策略冲突的缓存策略,所述第二属性用于确定所述第一缓存策略组中能否包括多个所述一个缓存策略。
8.根据权利要求6或7所述的方法,其特征在于,所述根据所述第一实体产生的数据的访问记录对所述第一缓存策略组进行优化,得到第二缓存策略组,包括:
在所述第一缓存策略组合法的情况下,根据所述第一实体产生的数据的访问记录,利用启发式算法或机器学习算法对所述第一缓存策略组中的每个缓存策略进行迭代优化,从而得到所述第二缓存策略组。
9.一种数据缓存装置,其特征在于,所述装置包括:
获取单元,用于从多个类型的缓存策略库中获取多个缓存策略,每个类型的缓存策略库包括的至少一个缓存策略的类型相同,其中,所述缓存策略库的类型包括过滤类型、预取类型、替换类型、牺牲缓存类型中的至少一个,所述过滤类型的缓存策略用于过滤数据,所述预取类型的缓存策略用于预取数据,所述替换类型的缓存策略用于从缓存中淘汰数据,所述牺牲缓存类型的缓存策略用于处理从所述缓存中淘汰的数据;
缓存单元,用于将包括所述多个缓存策略的第一缓存策略组运用于第一实体产生的数据。
10.根据权利要求9所述的装置,其特征在于,所述缓存单元具体用于:
根据所述第一实体产生的数据的访问记录对所述第一缓存策略组进行优化,得到第二缓存策略组;
将所述第二缓存策略组运用于所述第一实体产生的数据。
11.根据权利要求9或10所述的装置,其特征在于,所述缓存策略库的类型还包括专有类型,所述专有类型的缓存策略为用户设置的缓存策略。
12.根据权利要求9-11任一项所述的装置,其特征在于,所述缓存单元还用于:
根据第二实体产生的数据的访问记录对所述第一缓存策略组进行优化,得到第三缓存策略组;
将所述第三缓存策略组运用于所述第二实体产生的数据。
13.根据权利要求11所述的装置,其特征在于,所述第一缓存策略组中的多个缓存策略是按照预设顺序排布的,当所述多个缓存策略包括所述专有类型的缓存策略时,所述专有类型的缓存策略的位置由所述用户设置。
14.根据权利要求9-13任一项所述的装置,其特征在于,所述装置还包括确定单元,所述确定单元用于:确定所述第一缓存策略组的合法性。
15.根据权利要求14所述的装置,其特征在于,所述多个缓存策略中的每个缓存策略对应一个策略属性集合,所述确定单元具体用于:
根据所述多个缓存策略对应的多个策略属性集合,确定所述第一缓存策略组的合法性;
其中,一个缓存策略对应的策略属性集合包括第一属性、第二属性中的至少一个,所述第一属性用于确定所述第一缓存策略组中是否存在与所述一个缓存策略冲突的缓存策略,所述第二属性用于确定所述第一缓存策略组中能否包括多个所述一个缓存策略。
16.根据权利要求14或15所述的装置,其特征在于,所述缓存单元具体用于:
在所述第一缓存策略组合法的情况下,根据所述第一实体产生的数据的访问记录,利用启发式算法或机器学习算法对所述第一缓存策略组中的每个缓存策略进行迭代优化,从而得到所述第二缓存策略组。
17.一种缓存设备,其特征在于,所述缓存设备包括处理器和存储器,所述处理器执行所述存储器中的代码以实现权利要求1至8任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,存储有计算机指令,所述计算机指令用于实现权利要求1至8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110057914.1A CN114764416A (zh) | 2021-01-15 | 2021-01-15 | 数据缓存方法、装置、设备及计算机可读存储介质 |
PCT/CN2022/071079 WO2022152086A1 (zh) | 2021-01-15 | 2022-01-10 | 数据缓存方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110057914.1A CN114764416A (zh) | 2021-01-15 | 2021-01-15 | 数据缓存方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114764416A true CN114764416A (zh) | 2022-07-19 |
Family
ID=82365274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110057914.1A Pending CN114764416A (zh) | 2021-01-15 | 2021-01-15 | 数据缓存方法、装置、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114764416A (zh) |
WO (1) | WO2022152086A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4312129A1 (en) * | 2022-07-25 | 2024-01-31 | Samsung Electronics Co., Ltd. | Adaptive cache indexing for a storage device |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106921713B (zh) * | 2015-12-25 | 2019-12-06 | 中国移动通信集团上海有限公司 | 一种资源缓存方法及装置 |
CN106997351B (zh) * | 2016-01-22 | 2021-03-02 | 斑马智行网络(香港)有限公司 | 一种资源缓存管理方法及系统和装置 |
CN106708636B (zh) * | 2016-12-29 | 2020-10-16 | 北京奇虎科技有限公司 | 基于集群的数据缓存方法及装置 |
CN110929195B (zh) * | 2019-11-21 | 2023-03-24 | 望海康信(北京)科技股份公司 | 数据的缓存策略确定方法、装置以及电子设备 |
-
2021
- 2021-01-15 CN CN202110057914.1A patent/CN114764416A/zh active Pending
-
2022
- 2022-01-10 WO PCT/CN2022/071079 patent/WO2022152086A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4312129A1 (en) * | 2022-07-25 | 2024-01-31 | Samsung Electronics Co., Ltd. | Adaptive cache indexing for a storage device |
Also Published As
Publication number | Publication date |
---|---|
WO2022152086A1 (zh) | 2022-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9851911B1 (en) | Dynamic distribution of replicated data | |
US11323514B2 (en) | Data tiering for edge computers, hubs and central systems | |
US8972662B2 (en) | Dynamically adjusted threshold for population of secondary cache | |
CN107943718B (zh) | 一种清理缓存文件的方法和装置 | |
WO2015112249A1 (en) | Methods for combining access history and sequentiality for intelligent prefetching and devices thereof | |
KR20190078836A (ko) | 그래프 처리 성능 향상을 위한 복수 계층 캐싱 방법 및 복수 계층 캐싱 시스템 | |
WO2014183514A1 (zh) | 一种分级存储方法、装置和计算机存储介质 | |
CN109446225B (zh) | 数据缓存方法、装置、计算机设备及存储介质 | |
US20200341899A1 (en) | System and method for prediction based cache management | |
US20050097130A1 (en) | Tracking space usage in a database | |
CN110175070B (zh) | 分布式数据库的管理方法、装置、系统、介质及电子设备 | |
CN117235088B (zh) | 一种存储系统的缓存更新方法、装置、设备、介质及平台 | |
CN114764416A (zh) | 数据缓存方法、装置、设备及计算机可读存储介质 | |
CN117370058A (zh) | 一种业务处理方法、装置、电子设备及计算机可读介质 | |
CN112799978B (zh) | 缓存设计管理方法、装置、设备和计算机可读存储介质 | |
CN115878625A (zh) | 数据处理方法和装置及电子设备 | |
CN116028389A (zh) | 热点数据缓存方法、装置、设备及介质 | |
CN115563029A (zh) | 一种基于两层缓存结构的缓存方法及装置 | |
US11669498B2 (en) | Facilitating exclusive local locks on a distributed file system | |
CN116820323A (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
CN110968267B (zh) | 数据管理方法、装置、服务器及系统 | |
CN115809263A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114116538A (zh) | 镜像的缓存管理方法、装置、设备及存储介质 | |
EP4261712A1 (en) | Data elimination method and apparatus, cache node, and cache system | |
EP3133496A1 (en) | Cache-aware background storage processes |
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 |