CN101131673A - 一种通用缓存的方法 - Google Patents

一种通用缓存的方法 Download PDF

Info

Publication number
CN101131673A
CN101131673A CNA2006101125122A CN200610112512A CN101131673A CN 101131673 A CN101131673 A CN 101131673A CN A2006101125122 A CNA2006101125122 A CN A2006101125122A CN 200610112512 A CN200610112512 A CN 200610112512A CN 101131673 A CN101131673 A CN 101131673A
Authority
CN
China
Prior art keywords
data
buffer memory
memory section
asked
chained list
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
CNA2006101125122A
Other languages
English (en)
Other versions
CN100589087C (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN200610112512A priority Critical patent/CN100589087C/zh
Publication of CN101131673A publication Critical patent/CN101131673A/zh
Application granted granted Critical
Publication of CN100589087C publication Critical patent/CN100589087C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了一种通用缓存的方法,用于获取缓存中存储的数据,其中,包括:步骤一,在缓存中设置与外部数据源连接的用于获取外部数据的接口;步骤二,将缓存分配成多个缓存段,将一个数据只存放在一个缓存段里,设置每个缓存段的名称和数据的主健值;步骤三,当缓存系统收到数据访问请求时,根据请求访问的缓存段名称和数据的主健值,访问对应的缓存段,并判断缓存段中是否已存储所请求的数据,若已存储,则输出所请求的数据,若未存储,则通过接口从外部数据源获取所请求的数据,保存所请求的数据至缓存段中并输出。

Description

一种通用缓存的方法
技术领域
本发明涉及一种数据处理方法,特别涉及一种数据的缓存方法。
背景技术
目前在业务软件系统应用中,对于系统处理性能要求越来越高,所以应该避免频繁的进行数据库操作和文件读写。为解决数据读取低效的问题必然会考虑到使用缓存技术。缓存就是将一定的数据存放在内存中,当系统需要访问此数据时,将可以直接从内存中读取,而减免了数据库操作和文件读写的耗时。在现实环境下,对于大数据量,系统不可能将所有数据缓存到内存中,所以需要使用一定的策略进行缓存项的淘汰,并且缓存需要在它的缓存项发生变化的时候对其进行更新处理。
目前现有的缓存系统大多采用LRU(最近最少使用)算法,LRU算法是一种比较简单的淘汰选择算法,它不能真实的反映缓存中内容的使用情况。
目前现有的一些缓存系统为了实现简单,而没有提供缓存同步功能,这将导致缓存的数据和真实数据的偏差。有一些缓存系统虽然提供了缓存同步功能,但是因为需要消耗大量的系统资源,导致缓存同步代价过大。
发明内容
本发明所要解决的技术问题在于提出一种通用缓存的方法,在系统对外部数据源需要进行频繁访问时,能够有效地提高读取数据的性能。
为实现上述目的,本发明提出了一种通用缓存的方法,用于获取缓存中存储的数据,其中,包括:
步骤一,在缓存中设置与外部数据源连接的用于获取外部数据的接口;
步骤二,将缓存分配成多个缓存段,将一个数据只存放在一个缓存段里,设置每个缓存段的名称和数据的主健值;
步骤三,当缓存系统收到数据访问请求时,根据请求访问的缓存段名称和数据的主健值,访问对应的缓存段,并判断所述缓存段中是否已存储所请求的数据,若已存储,则输出所请求的数据,若未存储,则通过所述接口从外部数据源获取所请求的数据,保存所请求的数据至所述缓存段中并输出。
上述的通用缓存的方法,其特征在于,还包括:
当访问或者修改所述缓存段时,设置段级锁,锁定所述缓存段的步骤;和
当从所述外部数据源读取所述请求的数据时,为所述缓存段中对应的数据设置行级锁,锁定所请求的数据的步骤。
上述的通用缓存的方法,其中,所述步骤三还包括:
步骤31,当所述缓存段中已存储所请求的数据时,判断所述已存储的数据对应的外部数据源中的数据是否已经被更新;
步骤32,若未被更新,则直接输出所述已存储的数据,若已被更新,则调用所述接口从外部数据源获取对应的数据并更新所述缓存项中存储的数据。
上述的通用缓存的方法,其中,所述步骤三具体包括:
步骤41,根据缓存段的名称和所请求的数据的主键值,访问所述缓存项并查找所请求的数据;
步骤42,为所述缓存段添加段级锁,判断所请求的数据是否存储在所述缓存项中,若已存储,则进入步骤43,若未存储,则进入步骤44;
步骤43,判断所请求的数据对应的外部数据源中的数据是否被更新,若未被更新,则进入步骤47,若已被更新,则进入步骤46;
步骤44,判断所请求的数据是否已被添加了行级锁,若没有被添加,则进入步骤46,若所请求的数据已被添加了行级锁,则进入步骤45;
步骤45,释放段级锁,在所述行级锁被释放后,进入步骤47;
步骤46,释放所述段级锁,在所请求的数据上添加行级锁,通过所述接口,从外部数据源获取所请求的数据,保存至所述缓存段中,然后进入步骤47;
步骤47,输出所述缓存段中存放的所请求的数据。
上述的通用缓存的方法,其中,当通过所述接口从外部数据源获取所请求的数据之后,还包括以下步骤:
步骤51,对所述缓存段添加段级锁;
步骤52,判断所述缓存段是否存在足够的剩余空间存储所述通过接口获取的数据,若存在足够的剩余空间,则进入步骤53,若不存在足够的空间,则在所述缓存段中释放出足够的空间,然后进入步骤53;
步骤53,将从所述接口获取的所请求的数据更新所述缓存段,释放所述段级锁和行级锁,输出更新后所请求的数据。
上述的通用缓存的方法,其中,所述步骤52中,当所述缓存段没有足够的存储空间时,采用接触计数器法在所述缓存段中释放足够的存储空间,具体包括以下步骤:
步骤61,查找出所述缓存段中被访问次数最少的数据;
步骤62,若被访问次数最少的数据只有一个,则从所述缓存段中删除所述数据,若被访问次数最少的数据有多个,则将所述多个数据中占用空间最大的数据删除;
步骤63,判断所述缓存段中的剩余空间是否能存储所请求的数据,若能够存储,则进入所述步骤53,若不能够存储,则返回所述步骤61。
上述的通用缓存的方法,其中,还包括:
根据所述缓存段中的各个数据的访问次数和大小,使用单向链表或双向链表对所述各个数据进行排序的步骤。
上述的通用缓存的方法,其中,每个数据为所述链表中的一个链表节点,所述排序的步骤具体包括以下步骤:
步骤81,根据所述请求的数据的主键值,查找所述链表中是否存在对应的链表节点,若存在所述链表节点,则将所述链表节点的访问次数增加1;
步骤82,判断所请求的数据的大小是否改变,若没有改变,则进入步骤84,若所请求的数据被更新,所述数据大小的改变,则修改对应的所述链表节点大小属性,然后进入步骤84;
步骤83,若所述链表中不存在所述链表节点,则根据所请求的数据的主键值、大小和访问次数,在所述链表中创建新的链表节点,然后进入步骤84;
步骤84,根据所述缓存段中各个数据的访问次数和大小,将多对应的链表节点进行排序,将被访问次数较少的链表节电排在被访问次数较多的链表节点的前面,在被访问次数相同的链表节点中,将数据较大的链表节点排在数据较小的链表节点的前面。
上述的通用缓存的方法,其中,将所述缓存段中的各个数据进行排序时,还包括:
添加热点链表和冷点链表的步骤。
上述的通用缓存的方法,其中,还包括:
为所述缓存段中各个数据设置包括正常状态、更新状态或删除状态的状态标识的步骤。
上述的通用缓存的方法,其中,当所述缓存段中的数据的状态标识为更新状态时,还包括:
当所述数据被访问时,通过所述接口从外部数据源获取与所述数据对应的新数据,并更新所述缓存段的步骤;
当所述缓存段中的数据的状态标识为删除状态时,还包括:
将通过所述接口从外部数据源获取的数据,覆盖所述处于删除状态的数据并存储的步骤。
上述的通用缓存的方法,其中,所述步骤二还包括:
步骤121,设置所述缓存段的最大存储空间参数和从外部数据源读取数据的接口的实现类参数;
步骤122,在缓存系统启动时,初始化缓存中各个缓存段的名称和上述设置参数。
本发明基于统一User Interface(用户调用接口)接口的基于Touch Count(接触计数器)算法的通用缓存实现方法,具有以下有益效果:
1.简单,统一的UI接口。
2.缓存分段管理,管理清晰(每段只存放各自数据,与其他段没有关系),读取性能高(查找只会在本段,而不需要到不相关的段查找费时),灵活性高(每个段都可以有自已特殊的获取外部数据接口实现,也可以使用同一个)
3.通用性,通过获取外部数据接口屏蔽了不同系统之间的不一致性。
4.使用Touch Count(接触计数器)算法,而不是一般缓存使用的LRU(最近最少使用)算法。
5.对缓存项的更新,不是立即产生而是在实际产生访问请求的时候进行更新。
附图说明
图1是本发明的缓存模块处理流程图;
图2是本发明中touch count(接触计数器)算法操作流程图。
具体实施方式
本发明的实施方法如下:(a)在缓存系统中设置一个获取外部数据信息的接口,此接口负责当缓存中没有对应数据时,通用缓存模块会根据此接口的实现去外部数据源获取对应数据。
(b)本发明中缓存实行分段管理,每段只存放各自的数据,与其他段没有关系,查找时只在本段不需要到不相关的缓存段查找,将缓存分成多个缓存段时,需要设置相关参数。包括以下主要参数:
缓存段的名称(本发明对缓存是分段管理,这样增加缓存的访问性能和灵活性);
缓存段的最大存储空间;
从外部数据源读取数据接口的实现类(此实现类用于从外部数据源获取相关数据到缓存系统)。
(c)在系统中设置二级锁对象,分别包括:
第一级:段级锁,在并发访问或者并发修改缓存段时锁定该缓存段。
第二级:行级锁,在缓存段从外部数据源读取数据的时候加行级锁,释放段级锁(一般情况从外部数据源读数据是比较耗时的操作),增加缓存模块的并发响应。
(d)当缓存模块收到一个数据访问请求时,缓存模块根据请求中携带的缓存段的名称和数据Key值(主键值,每个数据在缓存段中都有一个唯一的Key值,用于缓存段中快速定位和与其他数据区分)信息,到指定的缓存段去查找数据并且添加段级锁,
当所请求的数据找到的情况下:
如果找到并且数据对应的外部数据没有被更新,将数据返回给访问请求并且更新数据的访问次数,释放段级锁;
如果找到但是数据对应的外部数据已经被更新,缓存模块在此缓存段中释放段级锁然后对此数据Key值加行级锁并且调用获取外部数据接口获取更新数据,将更新数据并且更新访问次数和数据大小,释放行级锁;如果缓存段没有足够的空间更新数据,将根据Touch Count(接触计数器)算法在缓存段中释放足够的空间供数据更新
当所请求的数据找不到的情况下:
如果找不到并且对应的数据Key没有加行级锁时,缓存模块在此缓存段中为此数据Key加行级锁并且调用获取外部数据信息接口获取新数据,将新数据加入缓存段并且更新访问次数和数据大小,释放此行级锁;如果缓存段没有足够的空间更新数据,将根据Touch Count(接触计数器)算法释放足够的空间供数据添加。
如果找不到并且对应的数据Key已经加行级锁时,访问请求将在此行级锁上等待,直到解锁然后从缓存段中输出所请求的数据。
(e)在系统缓存对应的数据发生更新的时候,通过缓存更新接口通知缓存模块将对应的数据状态位标示为更新状态(数据状态包括正常状态,更新状态和删除状态),此时并不立即更新数据,只有在该数据被再次访问时才产生实际的更新操作。
(f)在系统缓存对应的数据被删除的时候,通过缓存删除接口通知缓存模块将对应的数据状态标识为删除状态(数据状态包括正常状态,更新状态和删除状态),此时并不立即删除数据,而是在添加新的数据时才覆盖此删除的数据。
进一步地,上述通用缓存的实现方法具有以下特点:系统对缓存的更新是通过将数据的状态标识修改为更新状态(数据状态包括正常状态,更新状态和删除状态)。被标示为更新状态的数据只有被再次访问的时候才会实际的更新内容,然后将此数据的状态位修改为正常状态;如果此数据一直没有被访问内容更新的操作就不会产生。此方法可以有效的避免不必要的实际内容更新,避免实际内容更新时的系统消耗。
1)当数据在被访问前产生的N次更新,此方法只产生1次实际内容更新,避免了N-1次内容更新。
2)当数据有更新,但是一直没有被访问,此方法避免了1此内容更新。
此外,系统对缓存项中数据的更新和删除可以通过Web Service(Web服务)或者Socket(套接字)在远端操作。
使用本发明所述的通用缓存系统时,需要注意要在系统启动时初始化配置信息,包括缓存段的名称,缓存段空间的最大阀值,外部数据读取类。
下面结合附图及具体实施例对本发明进行详细说明。
图1是本发明的处理流程示意图。如图1所示,用户访问缓存系统流程包括如下步骤:
步骤S101:用户提供缓存段的名称(本发明的缓存系统是分段管理)和所请求的数据Key值,访问缓存系统请求相关数据;
步骤S102:缓存系统根据用户提供的缓存段的名称,为该缓存段添加段级锁;
步骤S103:缓存系统根据用户提供的所请求的数据Key值,在指定的缓存段里查找数据,判断所请求的数据是否被缓存;
步骤S104:如果步骤S103结果为数据已经被缓存,缓存系统将判断此数据是否需要更新;
步骤S105:如果步骤S103结果为数据没有被缓存,缓存系统将判断该请求的数据在该缓存段中是否已添加了行级锁;
步骤S106:如果步骤S104结果为数据不需要更新,缓存系统将该所请求的数据输出返回给用户,流程结束;
步骤S107:如果步骤S104结果为数据需要更新,缓存系统将释放步骤S102为该缓存段添加的段级锁,然后为该数据在缓存段中添加行级锁;
步骤S108:如果步骤S105结果为数据已经添加了行级锁,缓存系统将释放步骤S102为该缓存段添加的段级锁,然后在该数据的行级锁上等待,直到该数据的行级锁被释放;
步骤S109:缓存系统通过“获取外部数据接口“获取该数据的更新数据。
步骤S110:缓存系统根据用户提供的缓存段的名称,为缓存段添加段级锁。
步骤S111:缓存系统判断该缓存段是否有足够的剩余空间存放数据。
步骤S112:如果步骤S111结果为有足够的剩余空间或者步骤S113结束后,缓存系统将用步骤S109获取的数据更新缓存段。
步骤S113:如果步骤S111结果为没有足够的剩余空间,缓存系统将使用Touch Count(接触计数器)算法在该缓存段中释放足够的空间。
步骤S114:在步骤S112结束后,缓存系统释放步骤S107为该缓存段添加的行级锁和步骤S110添加的段级锁。
步骤S115:在步骤S108结束后,缓存系统将该请求的数据返回给用户,流程结束。
步骤S116:在步骤S114结束后,缓存系统将此数据返回给用户,流程结束。
在缓存项访问次数和缓存项本身大小发生变化时,可以使用单向链表或双向链表对缓存项进行Touch Count(接触计数器)排序。
为了避免在每次缓存段空间不足时对缓存项排序造成的单点性能瓶颈,当缓存段空间不足的情形下能快捷的获取淘汰项,本实施例中,采用双向链表对缓存项进行Touch Count排序。
在缓存项排序时添加热点链表和冷点链表,更合理的使用Touch Count(接触计数器)算法。
Touch Count(接触计数器)算法是根据数据的访问次数和数据本身的大小来决定在缓存段超过指定大小的时候,选择需要淘汰的缓存项。具体算法是当系统对数据访问时,数据的访问次数累加一。当缓存段的剩余空间不够存放新创建的数据时,将根据下面的步骤淘汰数据:
(1)找到访问次数最少的数据。
(2)如果找到的访问次数最少的数据只有一项,则跳转到(3),否则跳转到(4)
(3)从缓存段中淘汰此数据,然后跳转到(5)
(4)然后在找到的多个数据中就数据内容的大小,把最大的淘汰掉,然后跳转到(5)
(5)判断缓存段中剩余的空间是否能存放下新添加的数据。如果可以跳转到(6),否则跳转到(1)
(6)在缓存段中添加新的数据。
这里要说明的是,系统中设置的缓存大小是有限的。这主要是因为系统的内存是有限的,稀缺的资源。如果缓存系统占用的内存过大,可能会影响其他进程运行并且会导致系统频繁的使用虚拟缓存或swap(交换区)区,严重影响系统性能;所以在实际的系统中,必须为缓存大小设置最大阀值。而此缓存系统是分段管理的,所以对缓存大小的限制是分散到每个缓存段上面的,系统对每个缓存段都使用一个长整型变量来表示此段最大允许的缓存大小,当缓存段的数据内容的大小超过缓存段的最大值时,系统会通过touch count(接触计数器)算法释放足够的空间,缓存此项内容。
图2是本发明中touch count(接触计数器)算法操作流程图。如图2所示,具体包括以下步骤:
步骤S201,根据请求访问的数据的内容Key获取对应的链表节点;
步骤S202,判断双向链表中是否有对应的链表节点;
步骤S203,如果不存在该链表节点,则根据所请求的数据Key值,内容大小和访问次数(初始取值为1)创建该链表节点,
步骤S204,如果存在该链表节点,则将该链表节点的访问次数增加1;
步骤S205,步骤S203结束后,判断双向链表的链表头和链表尾是否为空,如果不为空进入步骤S208,如果链表头或链表尾有空,则进入步骤S207;
步骤S206,步骤S204结束后,判断链表节点对应的所请求的数据是否改变(如果更新了缓存中的数据,则数据的内容大小会改变),如果改变,进入步骤S209,如果没有改变,进入步骤S208;
步骤S207,将链表头和链表尾都指向刚创建的链表节点;
步骤S208,根据节点对象的访问次数和内容大小进行排序,访问次数越小的节点越靠前,在访问次数相同的情况下,内容越大的越靠前,根据前述规则将新创建的节点添加到链表中,然后修改前后节点和本节点的相应的属性。
下面分别介绍本发明的四个实施例。
第一实施例
当前所请求的数据不在指定的缓存段中并且对应的缓存段有足够的剩余空间,存放请求的数据。
当系统新收到一个用户请求内容时,系统判断该数据不在指定的缓存段中,系统为所请求的数据key分配行级锁,然后从外部数据源获取所请求的数据,调用段级锁将此内容添加到缓存系统中对应的缓存段中,释放添加的锁,然后返回此内容给用户。
第二实施例
当所请求的数据已经在缓存段中时,缓存系统获取所请求的数据并输出返回给用户。
第三实施例
当所请求的数据不在缓存段中并且该缓存段没有足够的剩余空间时,缓存系统为所请求的数据key分配行级锁,然后通过获取外部数据接口从外部数据源获取所请求的数据,并且通过touch count(接触计数器)算法释放足够的空间,将所请求的数据添加对应的缓存段中,然后释放所加的锁,最后输出所请求的数据给用户。
第四实施例
当缓存系统新收到一个用户的数据访问请求时,缓存系统发现所请求的数据被添加行级锁,正在被另一个用户请求时,让用户等待,直到该行级锁被释放。然后缓存系统唤醒用户,输出所请求的数据输出返回给用户。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的普通技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (12)

1.一种通用缓存的方法,用于获取缓存中存储的数据,其特征在于,包括:
步骤一,在缓存中设置与外部数据源连接的用于获取外部数据的接口;
步骤二,将缓存分配成多个缓存段,将一个数据只存放在一个缓存段里,设置每个缓存段的名称和数据的主健值;
步骤三,当缓存系统收到数据访问请求时,根据请求访问的缓存段名称和数据的主健值,访问对应的缓存段,并判断所述缓存段中是否已存储所请求的数据,若已存储,则输出所请求的数据,若未存储,则通过所述接口从外部数据源获取所请求的数据,保存所请求的数据至所述缓存段中并输出。
2.根据权利要求1所述的通用缓存的方法,其特征在于,还包括:
当访问或者修改所述缓存段时,设置段级锁,锁定所述缓存段的步骤;和
当从所述外部数据源读取所述请求的数据时,为所述缓存段中对应的数据设置行级锁,锁定所请求的数据的步骤。
3.根据权利要求1所述的通用缓存的方法,其特征在于,所述步骤三还包括:
步骤31,当所述缓存段中已存储所请求的数据时,判断所述已存储的数据对应的外部数据源中的数据是否已经被更新;
步骤32,若未被更新,则直接输出所述已存储的数据,若已被更新,则调用所述接口从外部数据源获取对应的数据并更新所述缓存项中存储的数据。
4.根据权利要求2或3所述的通用缓存的方法,其特征在于,所述步骤三具体包括:
步骤41,根据缓存段的名称和所请求的数据的主键值,访问所述缓存项并查找所请求的数据;
步骤42,为所述缓存段添加段级锁,判断所请求的数据是否存储在所述缓存项中,若已存储,则进入步骤43,若未存储,则进入步骤44;
步骤43,判断所请求的数据对应的外部数据源中的数据是否被更新,若未被更新,则进入步骤47,若已被更新,则进入步骤46;
步骤44,判断所请求的数据是否已被添加了行级锁,若没有被添加,则进入步骤46,若所请求的数据已被添加了行级锁,则进入步骤45;
步骤45,释放段级锁,在所述行级锁被释放后,进入步骤47;
步骤46,释放所述段级锁,在所请求的数据上添加行级锁,通过所述接口,从外部数据源获取所请求的数据,保存至所述缓存段中,然后进入步骤47:
步骤47,输出所述缓存段中存放的所请求的数据。
5.根据权利要求4所述的通用缓存的方法,其特征在于,当通过所述接口从外部数据源获取所请求的数据之后,还包括以下步骤:
步骤51,对所述缓存段添加段级锁;
步骤52,判断所述缓存段是否存在足够的剩余空间存储所述通过接口获取的数据,若存在足够的剩余空间,则进入步骤53,若不存在足够的空间,则在所述缓存段中释放出足够的空间,然后进入步骤53;
步骤53,将从所述接口获取的所请求的数据更新所述缓存段,释放所述段级锁和行级锁,输出更新后所请求的数据。
6.根据权利要求5所述的通用缓存的方法,其特征在于,所述步骤52中,当所述缓存段没有足够的存储空间时,采用接触计数器法在所述缓存段中释放足够的存储空间,具体包括以下步骤:
步骤61,查找出所述缓存段中被访问次数最少的数据;
步骤62,若被访问次数最少的数据只有一个,则从所述缓存段中删除所述数据,若被访问次数最少的数据有多个,则将所述多个数据中占用空间最大的数据删除;
步骤63,判断所述缓存段中的剩余空间是否能存储所请求的数据,若能够存储,则进入所述步骤53,若不能够存储,则返回所述步骤61。
7.根据权利要求6所述的通用缓存的方法,其特征在于,还包括:
根据所述缓存段中的各个数据的访问次数和大小,使用单向链表或双向链表对所述各个数据进行排序的步骤。
8.根据权利要求7所述的通用缓存的方法,其特征在于,每个数据为所述链表中的一个链表节点,所述排序的步骤具体包括以下步骤:
步骤81,根据所述请求的数据的主键值,查找所述链表中是否存在对应的链表节点,若存在所述链表节点,则将所述链表节点的访问次数增加1;
步骤82,判断所请求的数据的大小是否改变,若没有改变,则进入步骤84,若所请求的数据被更新,所述数据大小的改变,则修改对应的所述链表节点大小属性,然后进入步骤84;
步骤83,若所述链表中不存在所述链表节点,则根据所请求的数据的主键值、大小和访问次数,在所述链表中创建新的链表节点,然后进入步骤84;
步骤84,根据所述缓存段中各个数据的访问次数和大小,将多对应的链表节点进行排序,将被访问次数较少的链表节电排在被访问次数较多的链表节点的前面,在被访问次数相同的链表节点中,将数据较大的链表节点排在数据较小的链表节点的前面。
9.根据权利要求7或8所述的通用缓存的方法,其特征在于,将所述缓存段中的各个数据进行排序时,还包括:
添加热点链表和冷点链表的步骤。
10.根据权利要求2或3所述的通用缓存的方法,其特征在于,还包括:
为所述缓存段中各个数据设置包括正常状态、更新状态或删除状态的状态标识的步骤。
11.根据权利要求10所述的通用缓存的方法,其特征在于,当所述缓存段中的数据的状态标识为更新状态时,还包括:
当所述数据被访问时,通过所述接口从外部数据源获取与所述数据对应的新数据,并更新所述缓存段的步骤;
当所述缓存段中的数据的状态标识为删除状态时,还包括:
将通过所述接口从外部数据源获取的数据,覆盖所述处于删除状态的数据并存储的步骤。
12.根据权利要求1所述的通用缓存的方法,其特征在于,所述步骤二还包括:
步骤121,设置所述缓存段的最大存储空间参数和从外部数据源读取数据的接口的实现类参数;
步骤122,在缓存系统启动时,初始化缓存中各个缓存段的名称和上述设置参数。
CN200610112512A 2006-08-22 2006-08-22 一种通用缓存的方法 Expired - Fee Related CN100589087C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200610112512A CN100589087C (zh) 2006-08-22 2006-08-22 一种通用缓存的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200610112512A CN100589087C (zh) 2006-08-22 2006-08-22 一种通用缓存的方法

Publications (2)

Publication Number Publication Date
CN101131673A true CN101131673A (zh) 2008-02-27
CN100589087C CN100589087C (zh) 2010-02-10

Family

ID=39128945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200610112512A Expired - Fee Related CN100589087C (zh) 2006-08-22 2006-08-22 一种通用缓存的方法

Country Status (1)

Country Link
CN (1) CN100589087C (zh)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101887399A (zh) * 2010-06-28 2010-11-17 北京用友政务软件有限公司 服务器端无障碍存取高速缓存数据的方法
CN101887398A (zh) * 2010-06-25 2010-11-17 浪潮(北京)电子信息产业有限公司 一种动态提高服务器输入输出吞吐量的方法和系统
CN102497422A (zh) * 2011-12-12 2012-06-13 沈文策 网络直播方法和网络直播系统
CN101742571B (zh) * 2009-11-25 2012-10-24 新邮通信设备有限公司 查找方法及系统
CN103019964A (zh) * 2012-12-24 2013-04-03 北京搜狐新媒体信息技术有限公司 一种缓存数据访问方法及数据缓存系统
CN103631825A (zh) * 2012-08-28 2014-03-12 腾讯科技(深圳)有限公司 数据服务器、数据存取系统及数据存取方法
CN103810189A (zh) * 2012-11-08 2014-05-21 腾讯科技(深圳)有限公司 一种热点消息处理方法及系统
CN104504158A (zh) * 2015-01-19 2015-04-08 浪潮(北京)电子信息产业有限公司 一种快速更新业务的内存缓存的方法和设备
CN104602104A (zh) * 2015-01-15 2015-05-06 深圳市同洲电子股份有限公司 一种缓存文件处理方法及数字电视终端
CN105302840A (zh) * 2014-07-31 2016-02-03 阿里巴巴集团控股有限公司 一种缓存管理方法与设备
CN105653566A (zh) * 2014-12-03 2016-06-08 阿里巴巴集团控股有限公司 一种实现数据库写访问的方法及装置
CN105721538A (zh) * 2015-12-30 2016-06-29 东莞市青麦田数码科技有限公司 数据访问的方法和装置
CN105930171A (zh) * 2016-05-13 2016-09-07 乐视控股(北京)有限公司 分布式统一缓存实现方法、装置及系统
CN105988715A (zh) * 2015-02-05 2016-10-05 深圳市腾讯计算机系统有限公司 数据存储方法及装置
CN106133702A (zh) * 2014-04-03 2016-11-16 索尼公司 信息处理装置和记录介质
CN106294205A (zh) * 2015-05-15 2017-01-04 北京国双科技有限公司 缓存数据处理方法及装置
CN106506569A (zh) * 2015-09-06 2017-03-15 北京国双科技有限公司 权限的更新方法和装置
CN107741962A (zh) * 2017-09-26 2018-02-27 平安科技(深圳)有限公司 数据缓存方法及服务器
CN110362769A (zh) * 2019-06-25 2019-10-22 苏州浪潮智能科技有限公司 一种数据处理方法及装置
CN110737680A (zh) * 2019-09-23 2020-01-31 贝壳技术有限公司 缓存数据管理方法、装置、存储介质及电子设备
CN111587423A (zh) * 2017-11-13 2020-08-25 维卡艾欧有限公司 分布式存储系统的分层数据策略
CN113434517A (zh) * 2021-08-26 2021-09-24 中博信息技术研究院有限公司 缓存方法
US20220283873A1 (en) * 2021-03-04 2022-09-08 Nutanix, Inc. Vm memory reclamation by buffering hypervisor-swapped pages
CN115250277A (zh) * 2022-08-09 2022-10-28 西安邮电大学 适用于基于联盟链的边缘缓存系统的共识机制

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104702616A (zh) * 2015-03-20 2015-06-10 浪潮集团有限公司 一种cs架构监测数据保存及传输实现方法

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101742571B (zh) * 2009-11-25 2012-10-24 新邮通信设备有限公司 查找方法及系统
CN101887398B (zh) * 2010-06-25 2012-08-29 浪潮(北京)电子信息产业有限公司 一种动态提高服务器输入输出吞吐量的方法和系统
CN101887398A (zh) * 2010-06-25 2010-11-17 浪潮(北京)电子信息产业有限公司 一种动态提高服务器输入输出吞吐量的方法和系统
CN101887399A (zh) * 2010-06-28 2010-11-17 北京用友政务软件有限公司 服务器端无障碍存取高速缓存数据的方法
CN102497422A (zh) * 2011-12-12 2012-06-13 沈文策 网络直播方法和网络直播系统
CN103631825A (zh) * 2012-08-28 2014-03-12 腾讯科技(深圳)有限公司 数据服务器、数据存取系统及数据存取方法
CN103631825B (zh) * 2012-08-28 2018-02-23 腾讯科技(深圳)有限公司 数据服务器、数据存取系统及数据存取方法
CN103810189A (zh) * 2012-11-08 2014-05-21 腾讯科技(深圳)有限公司 一种热点消息处理方法及系统
CN103810189B (zh) * 2012-11-08 2018-06-05 腾讯科技(深圳)有限公司 一种热点消息处理方法及系统
CN103019964A (zh) * 2012-12-24 2013-04-03 北京搜狐新媒体信息技术有限公司 一种缓存数据访问方法及数据缓存系统
CN103019964B (zh) * 2012-12-24 2016-01-27 北京搜狐新媒体信息技术有限公司 一种缓存数据访问方法及数据缓存系统
CN106133702B (zh) * 2014-04-03 2020-01-31 索尼公司 信息处理装置和记录介质
CN106133702A (zh) * 2014-04-03 2016-11-16 索尼公司 信息处理装置和记录介质
CN105302840B (zh) * 2014-07-31 2019-11-15 阿里巴巴集团控股有限公司 一种缓存管理方法与设备
CN105302840A (zh) * 2014-07-31 2016-02-03 阿里巴巴集团控股有限公司 一种缓存管理方法与设备
CN105653566A (zh) * 2014-12-03 2016-06-08 阿里巴巴集团控股有限公司 一种实现数据库写访问的方法及装置
CN105653566B (zh) * 2014-12-03 2019-08-02 阿里巴巴集团控股有限公司 一种实现数据库写访问的方法及装置
CN104602104A (zh) * 2015-01-15 2015-05-06 深圳市同洲电子股份有限公司 一种缓存文件处理方法及数字电视终端
CN104504158A (zh) * 2015-01-19 2015-04-08 浪潮(北京)电子信息产业有限公司 一种快速更新业务的内存缓存的方法和设备
CN105988715A (zh) * 2015-02-05 2016-10-05 深圳市腾讯计算机系统有限公司 数据存储方法及装置
CN106294205A (zh) * 2015-05-15 2017-01-04 北京国双科技有限公司 缓存数据处理方法及装置
CN106294205B (zh) * 2015-05-15 2019-12-10 北京国双科技有限公司 缓存数据处理方法及装置
CN106506569A (zh) * 2015-09-06 2017-03-15 北京国双科技有限公司 权限的更新方法和装置
CN105721538A (zh) * 2015-12-30 2016-06-29 东莞市青麦田数码科技有限公司 数据访问的方法和装置
CN105930171A (zh) * 2016-05-13 2016-09-07 乐视控股(北京)有限公司 分布式统一缓存实现方法、装置及系统
CN107741962A (zh) * 2017-09-26 2018-02-27 平安科技(深圳)有限公司 数据缓存方法及服务器
CN111587423B (zh) * 2017-11-13 2023-09-19 维卡艾欧有限公司 分布式存储系统的分层数据策略
CN111587423A (zh) * 2017-11-13 2020-08-25 维卡艾欧有限公司 分布式存储系统的分层数据策略
CN110362769A (zh) * 2019-06-25 2019-10-22 苏州浪潮智能科技有限公司 一种数据处理方法及装置
CN110737680A (zh) * 2019-09-23 2020-01-31 贝壳技术有限公司 缓存数据管理方法、装置、存储介质及电子设备
US20220283873A1 (en) * 2021-03-04 2022-09-08 Nutanix, Inc. Vm memory reclamation by buffering hypervisor-swapped pages
CN113434517A (zh) * 2021-08-26 2021-09-24 中博信息技术研究院有限公司 缓存方法
CN115250277A (zh) * 2022-08-09 2022-10-28 西安邮电大学 适用于基于联盟链的边缘缓存系统的共识机制
CN115250277B (zh) * 2022-08-09 2023-09-05 西安邮电大学 将共识机制适用于基于联盟链的边缘缓存系统的方法

Also Published As

Publication number Publication date
CN100589087C (zh) 2010-02-10

Similar Documents

Publication Publication Date Title
CN100589087C (zh) 一种通用缓存的方法
CN100574281C (zh) 一种交换机路由表的管理方法
EP0303231B1 (en) Method and device for enabling concurrent access of indexed sequential data files
CN101354726B (zh) 一种机群文件系统的内存元数据管理方法
CN100550847C (zh) 一种解决Hash冲突的方法及装置
CN107256196A (zh) 基于闪存阵列的支持零拷贝的缓存系统及方法
US20160117354A1 (en) Method and system for dynamically partitioning very large database indices on write-once tables
CN109376156B (zh) 读取具有存储感知的混合索引的方法
CN100543750C (zh) 一种基于web应用的矩阵式数据缓存方法及装置
CN101187901B (zh) 一种实现文件访问的高速缓存系统和方法
CN102968322B (zh) 数据加载装置和数据加载方法
CN101986649B (zh) 应用于电信行业计费系统的共享数据中心
CN103886109B (zh) 一种实现数据库行锁的方法及装置
CN100578469C (zh) 存储、查询方法及存储控制器和查询系统
CN104778270A (zh) 一种用于多文件的存储方法
CN100424699C (zh) 一种属性可扩展的对象文件系统
CN103425435B (zh) 磁盘存储方法及磁盘存储系统
CN104598394A (zh) 一种可动态分配的数据缓存方法及系统
CN110262982A (zh) 一种固态硬盘地址映射的方法
CN101110043A (zh) 一种多核系统的资源管理方法和控制核
CN107122130A (zh) 一种数据重删方法及装置
CN101610197A (zh) 一种缓冲区管理方法及其系统
CN102799583A (zh) 一种面向对象的存取方法及系统
JP2004527820A (ja) コンピュータ予約システムにおけるデータの処理及びアクセス方法、並びにその方法を実施するためのシステム
CN109492020A (zh) 一种数据缓存方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100210

Termination date: 20150822

EXPY Termination of patent right or utility model