System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种带有时间因子和频次因子的缓存算法制造技术_技高网

一种带有时间因子和频次因子的缓存算法制造技术

技术编号:40930261 阅读:3 留言:0更新日期:2024-04-18 14:51
本发明专利技术涉及计算机系统技术领域,具体公开了一种带有时间因子和频次因子的缓存算法,包括:在访问一个缓存项时,在缓存链表里查找是否存在这一所述缓存项,并将这一所述缓存项记为当前缓存项;当所述当前缓存项存在时,将所述当前缓存项从当前位置所在的访问频次链表中删除,并将所述当前缓存项移到访问频次+1对应的访问频次链表中;同时,所述当前缓存项的访问频次更新为当前访问频次+1;当所述当前缓存项不存在时,将所述当前缓存项加入所述缓存链表中。本发明专利技术公开的缓存算法同时考虑了时间因子和频次因子,根据二者对缓存项进行淘汰,可以更好的提升缓存命中率,有效避免缓存污染情况,能够更好地利用缓存资源,提升缓存效率。

【技术实现步骤摘要】

本专利技术涉及计算机系统,尤其是涉及一种带有时间因子和频次因子的缓存算法


技术介绍

1、缓存算法,也称作置换算法,是指在缓存系统中缓存那些从主存储器中读取的数据,在缓存中暂存一段时间以加速后续对同一数据的访问。由于缓存空间有限,当缓存空间不足时,需要选择一些数据从缓存中剔除以腾出空间给新的数据。这个选择过程就需要使用缓存算法来决定选择哪些数据剔除,留下哪些数据放在缓存中。缓存算法设计的主要目的是在有限的缓存空间内,最小化缓存的替换次数并保证高效的缓存访问。

2、常见的缓存算法包括:先进先出(f ifo)、最近最少使用(lru)、最少使用(lfu)、随机置换法等。这些算法使用不同的计算方法来选择替换哪些数据。例如,f ifo算法按照最早进入缓存中的数据,先剔除这些数据,保留缓存中最新进入的数据;而lru算法则根据数据访问的时间来判断哪些数据最近被使用过,优先保留最近被访问过的数据,lfu则是根据每个数据被访问的次数来确定哪些数据应该被保存在缓存中,当缓存空间不足时,该算法会从缓存中移除访问次数最少的数据。

3、fi fo算法是简单实用的,但是它并不能适用所有的场景。例如,在一些场景中,一个数据可能被频繁地访问,但是由于fifo算法只考虑了缓存中数据进入的时间顺序,并没有考虑数据的访问频次情况,所以可能会把这些频繁访问的数据替换掉,从而降低缓存的命中率。由于lru算法考虑了数据的访问情况,因此可以有效提高缓存的命中率,但该算法并没有考虑缓存访问的频次,有些场景下随机偶尔访问的一些数据可能会置换掉访问频次较高的数据。lfu算法是根据访问频次来确定要保留哪些数据,如果某些数据访问频次很高,但是在后续的时间内不再被访问,那么这些数据仍可能在缓存中保留,占用着缓存空间,阻止其他更有用的数据进入缓存,导致缓存污染。

4、因此,专利技术一种既能够根据“最少访问次数的原则”淘汰缓存,又能够防止高频次无用缓存无法被淘汰造成缓存污染的情况出现的新的缓存算法,可以极大的提升缓存效率和缓存命中率,弥补上述缓存算法的缺陷。


技术实现思路

1、本专利技术的目的是提供一种带有时间因子和频次因子的缓存算法,包括:

2、在访问一个缓存项时,在缓存链表里查找是否存在这一所述缓存项,并将这一所述缓存项记为当前缓存项;

3、当所述当前缓存项存在时,将所述当前缓存项从当前位置所在的访问频次链表中删除,并将所述当前缓存项移到访问频次+1对应的访问频次链表中;同时,所述当前缓存项的访问频次更新为当前访问频次+1;

4、当所述当前缓存项不存在时,将所述当前缓存项加入所述缓存链表中。

5、进一步的,所述缓存链表和所述访问频次链表均为哈希表。

6、进一步的,所述缓存链表为哈希表cachemap。

7、进一步的,所述哈希表cachemap包含所有所述缓存项。

8、进一步的,所述哈希表cachemap用于根据缓存的键快速定位到对应的所述缓存项。

9、进一步的,所述访问频次链表为哈希表freqmap。

10、进一步的,所述freqmap包括所有所述缓存项的访问频次。

11、进一步的,所述freqmap用于根据存放所有所述缓存项的访问频次。

12、进一步的,将所述当前缓存项移到访问频次+1对应的访问频次链表中,具体为:将所述当前缓存项移到访问频次+1对应的访问频次链表中的头部。

13、进一步的,当所述当前缓存项不存在时,将所述当前缓存项加入缓存链表中,同时,将所述当前缓存项插入至访问频次最低的访问频次链表的尾部。

14、进一步的,当所述当前缓存项不存在时,将所述当前缓存项加入缓存链表中,若所述当前缓存项加入所述缓存链表后,所述缓存链表超过预先设定的缓存数量阈值,则在访问频次最低的所述访问频次链表中查找所有的最少访问缓存项的时间戳,获得所述时间戳最早的所述最少访问缓存项,并在所述访问频次链表和所述缓存链表中同时将所述时间戳最早的所述最少访问缓存项进行删除。

15、进一步的,所述带有时间因子和频次因子的缓存算法还包括:

16、根据特定时间周期对所述缓存链表里的缓存项进行淘汰。

17、进一步的,将时间划分成若干个时间窗,所述时间窗按时间的前后顺序进行排放,将所有所述缓存项进行数组的划分,所述数组的数量等于所述时间窗的数量,每一所述时间窗中存放一个所述数组对应的所述缓存项;

18、若干个所述时间窗根据时间周期按照所述前后顺序进行轮换检测,当前轮换到的所述时间窗记为当前时间窗,若所述当前时间窗中若存在所述数组,则将所述当前时间窗中存在的所有所述缓存项进行删除清理。

19、进一步的,将所述当前时间窗中存在的所有所述缓存项进行删除清理后,将所述当前缓存项添加至所述当前时间窗中。

20、本专利技术目的之二是提供一种带有时间因子和频次因子的缓存淘汰方法,包括:

21、根据若干缓存项建立键值对散列表ⅰ,根据若干所述缓存项的访问频次建立散列表ⅱ;

22、通过时间轮将时间划分为若干个分段,每个所述分段对应一个时间窗,所述时间窗按时间的前后顺序进行排放,每个所述时间窗包含一个或多个所述缓存项;将所有所述缓存项进行数组的划分,所述数组的数量等于所述时间窗的数量,每一所述时间窗中存放一个所述数组;

23、在访问一个缓存项时,在所述散列表ⅰ里查找是否存在这一所述缓存项,并将这一所述缓存项记为当前缓存项;

24、当所述当前缓存项存在时,将所述当前缓存项从当前位置所在的访问频次链表中删除,并将所述当前缓存项移到访问频次+1对应的散列表ⅱ中;同时,所述当前缓存项的访问频次更新为当前访问频次+1;

25、当所述当前缓存项不存在时,将所述当前缓存项加入所述散列表ⅰ中;

26、根据特定时间周期对所述缓存链表里的缓存项进行淘汰,若干个所述时间窗根据时间周期按照所述前后顺序进行轮换检测,当前轮换到的所述时间窗记为当前时间窗,若所述当前时间窗中若存在所述数组,则将所述当前时间窗中存在的所有所述缓存项进行删除清理,然后将所述当前缓存项添加至所述当前时间窗记中。

27、进一步的,所述散列表ⅰ和所述散列表ⅱ均为哈希表。

28、进一步的,所述散列表ⅰ为哈希表cachemap。

29、进一步的,所述哈希表cachemap包含所有所述缓存项。

30、进一步的,所述哈希表cachemap用于根据缓存的键快速定位到对应的所述缓存项。

31、进一步的,所述散列表ⅱ为哈希表freqmap。

32、进一步的,所述freqmap包括所有所述缓存项的访问频次。

33、进一步的,所述freqmap用于根据存放所有所述缓存项的访问频次。

34、进一步的,将所述当前缓存项移到访问频次+1对应的散列表ⅱ中,具体为:将所述当前缓存项移到访问频次本文档来自技高网...

【技术保护点】

1.一种带有时间因子和频次因子的缓存算法,其特征在于,包括:

2.根据权利要求1所述带有时间因子和频次因子的缓存算法,其特征在于,将所述当前缓存项移到访问频次+1对应的访问频次链表中,具体为:将所述当前缓存项移到访问频次+1对应的访问频次链表中的头部。

3.根据权利要求2所述带有时间因子和频次因子的缓存算法,其特征在于,当所述当前缓存项不存在时,将所述当前缓存项加入缓存链表中,同时,将所述当前缓存项插入至访问频次最低的访问频次链表的尾部。

4.根据权利要求3所述带有时间因子和频次因子的缓存算法,其特征在于,当所述当前缓存项不存在时,将所述当前缓存项加入缓存链表中,若所述当前缓存项加入所述缓存链表后,所述缓存链表超过预先设定的缓存数量阈值,则在访问频次最低的所述访问频次链表中查找所有的最少访问缓存项的时间戳,获得所述时间戳最早的所述最少访问缓存项,并在所述访问频次链表和所述缓存链表中同时将所述时间戳最早的所述最少访问缓存项进行删除。

5.根据权利要求1-4任一项所述带有时间因子和频次因子的缓存算法,其特征在于,所述带有时间因子和频次因子的缓存算法还包括:

6.根据权利要求5所述带有时间因子和频次因子的缓存算法,其特征在于,将时间划分成若干个时间窗,所述时间窗按时间的前后顺序进行排放,将所有所述缓存项进行数组的划分,所述数组的数量等于所述时间窗的数量,每一所述时间窗中存放一个所述数组对应的所述缓存项;

7.一种带有时间因子和频次因子的缓存淘汰方法,其特征在于,包括:

8.根据权利要求7所述的带有时间因子和频次因子的缓存淘汰方法,其特征在于,将所述当前缓存项移到访问频次+1对应的散列表Ⅱ中,具体为:将所述当前缓存项移到访问频次+1对应的访问频次链表中的头部;

9.根据权利要求8所述的带有时间因子和频次因子的缓存淘汰方法,其特征在于,当所述当前缓存项不存在时,将所述当前缓存项加入散列表Ⅰ中,若所述当前缓存项加入所述散列表Ⅰ后,所述散列表Ⅰ超过预先设定的缓存数量阈值,则在访问频次最低的所述散列表Ⅱ中查找所有的最少访问缓存项的时间戳,获得所述时间戳最早的所述最少访问缓存项,并在所述散列表Ⅱ和所述散列表Ⅰ中同时将所述时间戳最早的所述最少访问缓存项进行删除。

10.一种用于缓存淘汰的系统,其特征在于,包括哈希表cacheMap、哈希表freqMap、时间轮和权利要求1-6任一项所述的带有时间因子和频次因子的缓存算法;

...

【技术特征摘要】

1.一种带有时间因子和频次因子的缓存算法,其特征在于,包括:

2.根据权利要求1所述带有时间因子和频次因子的缓存算法,其特征在于,将所述当前缓存项移到访问频次+1对应的访问频次链表中,具体为:将所述当前缓存项移到访问频次+1对应的访问频次链表中的头部。

3.根据权利要求2所述带有时间因子和频次因子的缓存算法,其特征在于,当所述当前缓存项不存在时,将所述当前缓存项加入缓存链表中,同时,将所述当前缓存项插入至访问频次最低的访问频次链表的尾部。

4.根据权利要求3所述带有时间因子和频次因子的缓存算法,其特征在于,当所述当前缓存项不存在时,将所述当前缓存项加入缓存链表中,若所述当前缓存项加入所述缓存链表后,所述缓存链表超过预先设定的缓存数量阈值,则在访问频次最低的所述访问频次链表中查找所有的最少访问缓存项的时间戳,获得所述时间戳最早的所述最少访问缓存项,并在所述访问频次链表和所述缓存链表中同时将所述时间戳最早的所述最少访问缓存项进行删除。

5.根据权利要求1-4任一项所述带有时间因子和频次因子的缓存算法,其特征在于,所述带有时间因子和频次因子的缓存算法还包括:

6.根据权利要求5所述带有时间因子和频次因子...

【专利技术属性】
技术研发人员:张望成
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1