CN103870393A - 缓存管理方法及系统 - Google Patents
缓存管理方法及系统 Download PDFInfo
- Publication number
- CN103870393A CN103870393A CN201310287563.9A CN201310287563A CN103870393A CN 103870393 A CN103870393 A CN 103870393A CN 201310287563 A CN201310287563 A CN 201310287563A CN 103870393 A CN103870393 A CN 103870393A
- Authority
- CN
- China
- Prior art keywords
- key
- module
- buffer memory
- fragment
- value
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种缓存管理方法及系统。该缓存管理方法包括数据存取方法和命中率控制方法,该命中率控制方法包括:S21、判断第一定时器是否到期,若是,则执行S22,若不是,则再次执行S21;S22、遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作,然后再次执行S21;其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。本发明能够防止缓存Key无序增长、保证缓存空间得以有效利用,并且减少缓存服务的扩展部署成本。
Description
技术领域
本发明涉及高性能分布式缓存体系,尤其涉及一种缓存管理方法及系统。
背景技术
随着互联应用的发展,开放站点访问量的大幅增长,单位时间的访问量呈级数增长,数据交互站点后台应用技术将面临着极大的考验,特别是数据库的读写将成为最大瓶颈,数据量的无序增长、访问的集中使数据库的访问负担加重、数据库响应恶化,最后将导致网站显示的延迟,而为了解决这些问题,高性能分布式缓存服务得到了非常广泛的应用。
由于缓存服务采用了高效的底层通讯协议和本地缓存,同时高伸缩性的分布式部署大大地减少了数据库的压力,网络站点的响应速度和扩展性得到了大幅度的提高。
但是无序的使用缓存服务将会出现缓存服务资源的快速消耗,大量低命中率数据在缓存中堆积积压,缓存服务器的缓存资源消耗急剧增长,最后将导致高昂的服务器部署成本和缓存服务的可靠性。
现有的缓存通常是以Key-Value(Key为键,Value为值,Key-Value对即为键值对)结构来存储数据的,并对数据设定被动失效时间,当经过该被动失效时间后,数据便自动失效。被动失效显然无法满足高频次同步、短生命周期的缓存需求,并且由于在服务过程中无法对Key进行有效的管理,并且Key-Value结构又无法支持有效的数据遍历,因此在没有Key落地的情况下,也无法实现缓存的异步同步。这些都将导致糟糕的用户体验,并且数据库中数据的命中率增长也将无法避免。
发明内容
本发明要解决的技术问题是为了克服现有技术中大量低命中率数据在缓存中堆积积压,缓存服务器的缓存资源消耗急剧增长的缺陷,提供一种能够防止缓存Key无序增长、保证缓存空间得以有效利用的缓存管理方法及系统。
本发明是通过下述技术方案来解决上述技术问题:
一种缓存管理方法,缓存以Key-Value结构存储数据,其特点在于,该缓存管理方法采用一Key管理表,该Key管理表可以位于数据库中,该缓存管理方法包括相互独立运行的数据存取方法和命中率控制方法,
该数据存取方法包括:
S11、接收对Key的访问;
S12、判断Key管理表中是否存在S11中该Key,若存在,则执行S13,若不存在,则执行S14;
S13、从缓存中返回与S11中该Key对应的Value,并在Key管理表中为S11中该Key累计一次命中记录,然后结束流程;
S14、将S11中该Key存入Key管理表,并将与S11中该Key对应的Key-Value对存入缓存,然后结束流程;
该命中率控制方法包括:
S21、判断第一定时器是否到期,若是,则执行S22,若不是,则再次执行S21;
S22、遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作,然后再次执行S21;
其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。
通过在Key管理表中对Key的命中信息进行记录,便能够对Key的命中频次进行统计,而通过主动地发现并移除命中频次过低的Key,本发明便能够防止缓存Key无序增长、保证缓存空间得以有效利用。
较佳地,该缓存管理方法还包括与该数据存取方法相互独立运行的同步控制方法,该同步控制方法包括:
S31、判断第二定时器是否到期,若是,则执行S32,若不是,则再次执行S31;
S32、遍历Key管理表中的各Key,对最后一次更新时间与当前时间之差大于设定时间阈值的Key执行更新操作,然后再次执行S31;
其中,该更新操作包括:访问数据源以更新缓存中与该Key对应的Value,然后在Key管理表中将该更新的执行时间记录为该Key的最后一次更新时间。
由此,便能够实现对缓存数据的异步同步。
较佳地,将Key-Value对存入缓存的步骤包括:
S41、将待存入的Value的对象实体序列化为二进制的流包;
S42、对该流包进行压缩;
S43、将压缩后的该流包切片为多个片段,各片段分别具有索引序号;
S44、对每个片段执行:计算待存入的Key与该片段的索引序号之和,并将该片段与该和相对应地存入缓存;
从缓存中返回与被访问的Key对应的Value的步骤包括:
S51、根据被访问的Key与属于待返回的Value的各片段的索引序号之和从缓存中获取属于待返回的Value的各片段;
S52、将S51中获得的各片段拼装为流包;
S53、对S52获得的该流包进行解压缩;
S54、将解压缩后的该流包反序列化为Value的对象实体,并返回该对象实体。
将数据存入缓存时的自动切片能够保证每个片段仅在缓存中占用较小的空间,从而防止引起性能问题甚至是因寻址异常而导致服务端崩溃。而在读取数据时的自动拼装则又保证了返回数据的准确性与完整性。而压缩的步骤则能够进一步地减小数据所占用的空间。
较佳地,每个Key的设定频次阈值相互独立设置,和/或,每个Key的设定时间阈值相互独立设置。
这使得根据不同Key的具体访问频次情况以及对应的Value的具体更新频率情况来合理地设定专门的设定频次阈值以及设定时间阈值成为了可能。
较佳地,该命中率控制方法和/或该同步控制方法分布于多台服务器上实现。
将服务部署在负载均衡集群,将能够防止因服务器单点故障而引起服务崩溃。
较佳地,利用Gzip算法(一种通用的无损压缩算法)执行压缩和解压缩,和/或,每个片段小于1M。
利用Gzip算法对目标数据进行压缩,能够使主要数据包的压缩比达到70%。
而将每个片段切片为小于1M,则尤其适用于Memcache(一种高性能的分布式的内存对象缓存系统)。Memcache不善于处理大数据,如果数据超过1M,则存入指令set和读取指令get都会返回false(报错),从而引起性能问题甚至是寻址异常导致服务端崩溃。
本发明还提供了一种缓存管理系统,缓存以Key-Value结构存储数据,其特点在于,该缓存管理系统采用一Key管理表,该缓存管理系统包括相互独立运行的数据存取单元和命中率控制单元,
该数据存取单元包括:访问接收模块、判断模块、数据读取模块和数据存入模块;
该访问接收模块用于接收对Key的访问;
该判断模块用于判断Key管理表中是否存在被访问的该Key,若存在,则调用该数据读取模块,若不存在,则调用该数据存入模块;
该数据读取模块用于从缓存中返回与被访问的该Key对应的Value,并在Key管理表中为被访问的该Key累计一次命中记录;
该数据存入模块用于将被访问的该Key存入Key管理表,并将与被访问的该Key对应的Key-Value对存入缓存;
该命中率控制单元包括:第一定时模块和第一遍历模块;
该第一定时模块用于在每当第一定时器到期时调用该第一遍历模块;
该第一遍历模块用于遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作;
其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。
较佳地,该缓存管理系统还包括与该数据存取单元相互独立运行的同步控制单元,该同步控制单元包括:第二定时模块和第二遍历模块;
该第二定时模块用于在每当第二定时器到期时调用该第二遍历模块;
该第二遍历模块用于遍历Key管理表中的各Key,对最后一次更新时间与当前时间之差大于设定时间阈值的Key执行更新操作;
其中,该更新操作包括:访问数据源以更新缓存中与该Key对应的Value,然后在Key管理表中将该更新的执行时间记录为该Key的最后一次更新时间。
较佳地,该数据存入模块包括用于将Key-Value对存入缓存的以下模块:
序列化模块,用于将待存入的Value的对象实体序列化为二进制的流包;
压缩模块,用于对该流包进行压缩;
切片模块,用于将压缩后的该流包切片为多个片段,各片段分别具有索引序号;
存入执行模块,用于对每个片段执行:计算待存入的Key与该片段的索引序号之和,并将该片段与该和相对应地存入缓存;
该数据读取模块包括用于从缓存中返回与被访问的Key对应的Value的以下模块:
片段获取模块,用于根据被访问的Key与属于待返回的Value的各片段的索引序号之和从缓存中获取属于待返回的Value的各片段;
拼装模块,用于将该片段获取模块获得的各片段拼装为流包;
解压缩模块,用于对该拼装模块获得的该流包进行解压缩;
反序列化模块,用于将解压缩后的该流包反序列化为Value的对象实体,并返回该对象实体。
较佳地,每个Key的设定频次阈值相互独立设置,和/或,每个Key的设定时间阈值相互独立设置。
较佳地,该命中率控制单元和/或该同步控制单元分布于多台服务器上实现。
较佳地,该压缩模块和该解压缩模块利用Gzip算法实现,和/或,每个片段小于1M。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:能够防止缓存Key无序增长、保证缓存空间得以有效利用,并且减少缓存服务的扩展部署成本。
附图说明
图1为实施例中的数据存取方法的流程图。
图2为实施例中的命中率控制方法的流程图。
图3为实施例中的同步控制方法的流程图。
图4-6为实施例中的Key管理表的界面截图。
图7为实施例中的数据存取方法和命中率控制方法的运行示意图。
图8为实施例中的数据存取方法和同步控制方法的运行示意图。
图9为实施例中的将Key-Value对存入缓存的步骤的流程图。
图10为实施例中的从缓存中返回与Key对应的Value的步骤的流程图。
图11为实施例中的缓存管理系统的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
本实施例提供了一种缓存管理方法,该缓存管理方法包括一数据存取方法以及一命中率控制方法,并且还可以包括一同步控制方法。
在本实施中,缓存以Key-Value结构存储数据。并且,该缓存管理方法采用一Key管理表,该Key管理表可以位于数据库中,其中,该Key管理表的界面截图可以参见图4-6。
参见图1、图7和图8,该数据存取方法包括:
步骤100,接收对Key的访问。
步骤101,判断Key管理表中是否存在步骤100中该Key,若存在,则执行步骤102,若不存在,则执行步骤103。
步骤102,从缓存中返回与步骤100中该Key对应的Value,并在Key管理表中为步骤100中该Key累计一次命中记录,然后结束流程。
步骤103,将步骤100中该Key存入Key管理表,并将与步骤100中该Key对应的Key-Value对存入缓存,然后结束流程。
参见图2和图7,该命中率控制方法包括:
步骤200,判断第一定时器是否到期,若是,则执行步骤201,若不是,则再次执行步骤200。
步骤201,遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作,然后再次执行步骤200;
其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。
在本实施例中,为该命中率控制方法创建独立进程服务,并且该命中率控制服务独立于数据存取服务。另外,还可以根据每个Key的具体访问频次情况为各Key设定不同的设定频次阈值。
该命中率控制服务启动后将触发监听线程,监听线程可以例如每30分钟启动一次(即第一定时器每隔30分钟到期),一旦线程启动将遍历Key管理表,如果发现某个Key的命中频次少于设定频次阈值,则系统会自动判定该Key的命中频次过低,从而将该Key及对应的Value在高性能分布式缓存中移除,同时在Key管理表中将该Key的记录移除,但是如果某个Key的命中频次大于设定频次阈值,则系统会自动判定该Key的命中频次符合要求,在缓存中保留该Key及其对应的Value和该Key在Key管理表中的记录,同时刷新Key管理表中的计数器清零。如此一来,高性能分布式缓存服务的资源空间将会得到最大的利用,一些低频次的访问记录将会被这种频次策略移除。
在本实施例中,该命中率控制服务被部署在负载均衡集群(即分布式部署),防止出现服务器单点故障而引起的服务崩溃。
参见图3和图8,该同步控制方法包括:
步骤300,判断第二定时器是否到期,若是,则执行步骤301,若不是,则再次执行步骤300;
步骤301,遍历Key管理表中的各Key,对最后一次更新时间与当前时间之差大于设定时间阈值的Key执行更新操作,然后再次执行步骤300;
其中,该更新操作包括:访问数据源以更新缓存中与该Key对应的Value,然后在Key管理表中将该更新的执行时间记录为该Key的最后一次更新时间(即在Key管理表中为该Key更新最后一次同步的同步时间戳)。
在本实施例中,为该同步控制方法创建独立进程服务,该同步控制服务独立于缓存存取服务。另外,还可以根据每个Key的具体更新频率情况为各Key设定不同的设定时间阈值。
该同步控制服务启动后将触发监听线程,监听线程可以例如每5分钟启动一次(即第二定时器每隔5分钟到期),一旦线程启动将遍历Key管理表,如果某个Key的最后一次更新时间与当前时间的时间差大于设定时间阈值,则系统会触发托管独立同步线程,在该同步线程内将实现对数据源的访问和缓存的更新,同时将Key管理表中该Key记录的最后一次更新时间更新为当前时间,并且,此时的同步线程将由系统线程池托管。即,每个Key单独触发Key同步线程,线程由线程池管理,保证每次计算周期,最大效率地实现资源利用和线程处理。
在本实施例中,该同步控制服务同样被部署在负载均衡集群(即分布式部署),防止出现服务器单点故障而引起的服务崩溃。
图4-6即分别为该Key管理表的缓存配置管理、缓存更新管理以及缓存访问管理的界面截图。
其中,参见图9,将Key-Value对存入缓存的步骤包括:
步骤400,将待存入的Value的对象实体序列化为二进制的流包,单位1个字节。
步骤401,利用Gzip算法对该流包进行压缩。
步骤402,按照固定宽度,例如800K,将压缩后的该流包切片拆分为多个片段,直至到达流包尾部,各片段分别具有索引序号。
步骤403,对每个片段执行:计算待存入的Key与该片段的索引序号之和,并将该片段与该和相对应地存入缓存。即,将切片拆分出的片段总数存入索引Key,并将各片段以“Key+该片段的索引序号”的方式存入缓存。
相应地,参见图10,从缓存中返回与被访问的Key对应的Value的步骤包括:
步骤500,根据被访问的Key与属于待返回的Value的各片段的索引序号之和从缓存中获取属于待返回的Value的各片段。即,从被访问的Key中获取片段总数,以总数做定长循环,按照“Key+片段索引序号”的方式获取各个片段,直至到达片段总数边界。
步骤501,将步骤500中获得的各片段拼装为流包。
步骤502,对步骤501中获得的该流包进行解压缩。
步骤503,将解压缩后的该流包反序列化为Value的对象实体,并返回该对象实体。
本实施例中的该缓存管理方法可以以一管理组件封装包的形式实现,其中按照封装层次自下而上地包括:
1、高性能分布式缓存客户端封装层
2、Key管理层\命中频次计数
3、缓存值切片\组包层
4、缓存值压缩层
5、缓存外层封装
将缓存客户端分装至底层后,该管理组件封装包和Key使用者将与缓存的具体实现解耦,使用者无需关心缓存调用、通讯通道和协议实现的细节。
Key管理层\命中频次计数将实现Key的构造和Key管理表的维护,Key管理表中将Key的命中信息和命中次数随每次Key的首次访问而记录下来,随后Key管理表中的Key实时状态将成为Key同步控制服务同步数据和命中率控制服务管理Key的主要驱动数据。每次Key的二次访问都会在命中频次计数上累加值。
缓存值切片\组包层主要负责将存入缓存的缓存主体数据表进行自动切片,保证每个片段的单元数据包在缓存中的占用空间不超过1M,同时根据自动切片标记(即“Key+片段索引序号”)实现各片段的自动拼装。
缓存外层封装将实现对内部的有效封装,将缓存异常处理、切片拼装等实现全部封装在接口内部,接口只需开放Key、Value、缓存周期类型、查询回调函数句柄,使用者在无需关心内部实现的情况下便可以实现对缓存的存取。
相应地,本实施例还提供了一种缓存管理系统,该缓存管理系统采用一Key管理表,该缓存管理系统包括相互独立运行的数据存取单元1和命中率控制单元2,还可以包括同样与该数据存取单元1相互独立运行的同步控制单元3。
该数据存取单元包括1:访问接收模块11、判断模块12、数据读取模块13和数据存入模块14;
该访问接收模块用于接收对Key的访问;
该判断模块用于判断Key管理表中是否存在被访问的该Key,若存在,则调用该数据读取模块,若不存在,则调用该数据存入模块;
该数据读取模块用于从缓存中返回与被访问的该Key对应的Value,并在Key管理表中为被访问的该Key累计一次命中记录;
该数据存入模块用于将被访问的该Key存入Key管理表,并将与被访问的该Key对应的Key-Value对存入缓存。
该命中率控制单元2包括:第一定时模块21和第一遍历模块22;
该第一定时模块用于在每当第一定时器到期时调用该第一遍历模块;
该第一遍历模块用于遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作;
其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。
该同步控制单元3包括:第二定时模块31和第二遍历模块32;
该第二定时模块用于在每当第二定时器到期时调用该第二遍历模块;
该第二遍历模块用于遍历Key管理表中的各Key,对最后一次更新时间与当前时间之差大于设定时间阈值的Key执行更新操作;
其中,该更新操作包括:访问数据源以更新缓存中与该Key对应的Value,然后在Key管理表中将该更新的执行时间记录为该Key的最后一次更新时间。
其中,该数据存入模块14包括用于将Key-Value对存入缓存的以下模块:
序列化模块,用于将待存入的Value的对象实体序列化为二进制的流包;
压缩模块,用于对该流包进行压缩;
切片模块,用于将压缩后的该流包切片为多个片段,各片段分别具有索引序号;
存入执行模块,用于对每个片段执行:计算待存入的Key与该片段的索引序号之和,并将该片段与该和相对应地存入缓存。
而该数据读取模块13则包括用于从缓存中返回与被访问的Key对应的Value的以下模块:
片段获取模块,用于根据被访问的Key与属于待返回的Value的各片段的索引序号之和从缓存中获取属于待返回的Value的各片段;
拼装模块,用于将该片段获取模块获得的各片段拼装为流包;
解压缩模块,用于对该拼装模块获得的该流包进行解压缩;
反序列化模块,用于将解压缩后的该流包反序列化为Value的对象实体,并返回该对象实体。
在本实施例中,该命中率控制单元2和该同步控制单元3均分布于多台服务器上实现。
Claims (12)
1.一种缓存管理方法,缓存以Key-Value结构存储数据,其特征在于,该缓存管理方法采用一Key管理表,该缓存管理方法包括相互独立运行的数据存取方法和命中率控制方法,
该数据存取方法包括:
S11、接收对Key的访问;
S12、判断Key管理表中是否存在S11中该Key,若存在,则执行S13,若不存在,则执行S14;
S13、从缓存中返回与S11中该Key对应的Value,并在Key管理表中为S11中该Key累计一次命中记录,然后结束流程;
S14、将S11中该Key存入Key管理表,并将与S11中该Key对应的Key-Value对存入缓存,然后结束流程;
该命中率控制方法包括:
S21、判断第一定时器是否到期,若是,则执行S22,若不是,则再次执行S21;
S22、遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作,然后再次执行S21;
其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。
2.如权利要求1所述的缓存管理方法,其特征在于,该缓存管理方法还包括与该数据存取方法相互独立运行的同步控制方法,该同步控制方法包括:
S31、判断第二定时器是否到期,若是,则执行S32,若不是,则再次执行S31;
S32、遍历Key管理表中的各Key,对最后一次更新时间与当前时间之差大于设定时间阈值的Key执行更新操作,然后再次执行S31;
其中,该更新操作包括:访问数据源以更新缓存中与该Key对应的Value,然后在Key管理表中将该更新的执行时间记录为该Key的最后一次更新时间。
3.如权利要求1或2所述的缓存管理方法,其特征在于,
将Key-Value对存入缓存的步骤包括:
S41、将待存入的Value的对象实体序列化为二进制的流包;
S42、对该流包进行压缩;
S43、将压缩后的该流包切片为多个片段,各片段分别具有索引序号;
S44、对每个片段执行:计算待存入的Key与该片段的索引序号之和,并将该片段与该和相对应地存入缓存;
从缓存中返回与被访问的Key对应的Value的步骤包括:
S51、根据被访问的Key与属于待返回的Value的各片段的索引序号之和从缓存中获取属于待返回的Value的各片段;
S52、将S51中获得的各片段拼装为流包;
S53、对S52中获得的该流包进行解压缩;
S54、将解压缩后的该流包反序列化为Value的对象实体,并返回该对象实体。
4.如权利要求2所述的缓存管理方法,其特征在于,每个Key的设定频次阈值相互独立设置,和/或,每个Key的设定时间阈值相互独立设置。
5.如权利要求2所述的缓存管理方法,其特征在于,该命中率控制方法和/或该同步控制方法分布于多台服务器上实现。
6.如权利要求3所述的缓存管理方法,其特征在于,利用Gzip算法执行压缩和解压缩,和/或,每个片段小于1M。
7.一种缓存管理系统,缓存以Key-Value结构存储数据,其特征在于,该缓存管理系统采用一Key管理表,该缓存管理系统包括相互独立运行的数据存取单元和命中率控制单元,
该数据存取单元包括:访问接收模块、判断模块、数据读取模块和数据存入模块;
该访问接收模块用于接收对Key的访问;
该判断模块用于判断Key管理表中是否存在被访问的该Key,若存在,则调用该数据读取模块,若不存在,则调用该数据存入模块;
该数据读取模块用于从缓存中返回与被访问的该Key对应的Value,并在Key管理表中为被访问的该Key累计一次命中记录;
该数据存入模块用于将被访问的该Key存入Key管理表,并将与被访问的该Key对应的Key-Value对存入缓存;
该命中率控制单元包括:第一定时模块和第一遍历模块;
该第一定时模块用于在每当第一定时器到期时调用该第一遍历模块;
该第一遍历模块用于遍历Key管理表中的各Key,并对命中频次少于设定频次阈值的Key执行移除操作;
其中,该移除操作包括:从Key管理表中移除该Key,并将与该Key对应的Key-Value对从缓存中移除。
8.如权利要求7所述的缓存管理系统,其特征在于,该缓存管理系统还包括与该数据存取单元相互独立运行的同步控制单元,该同步控制单元包括:第二定时模块和第二遍历模块;
该第二定时模块用于在每当第二定时器到期时调用该第二遍历模块;
该第二遍历模块用于遍历Key管理表中的各Key,对最后一次更新时间与当前时间之差大于设定时间阈值的Key执行更新操作;
其中,该更新操作包括:访问数据源以更新缓存中与该Key对应的Value,然后在Key管理表中将该更新的执行时间记录为该Key的最后一次更新时间。
9.如权利要求7或8所述的缓存管理系统,其特征在于,
该数据存入模块包括用于将Key-Value对存入缓存的以下模块:
序列化模块,用于将待存入的Value的对象实体序列化为二进制的流包;
压缩模块,用于对该流包进行压缩;
切片模块,用于将压缩后的该流包切片为多个片段,各片段分别具有索引序号;
存入执行模块,用于对每个片段执行:计算待存入的Key与该片段的索引序号之和,并将该片段与该和相对应地存入缓存;
该数据读取模块包括用于从缓存中返回与被访问的Key对应的Value的以下模块:
片段获取模块,用于根据被访问的Key与属于待返回的Value的各片段的索引序号之和从缓存中获取属于待返回的Value的各片段;
拼装模块,用于将该片段获取模块获得的各片段拼装为流包;
解压缩模块,用于对该拼装模块获得的该流包进行解压缩;
反序列化模块,用于将解压缩后的该流包反序列化为Value的对象实体,并返回该对象实体。
10.如权利要求8所述的缓存管理系统,其特征在于,每个Key的设定频次阈值相互独立设置,和/或,每个Key的设定时间阈值相互独立设置。
11.如权利要求8所述的缓存管理系统,其特征在于,该命中率控制单元和/或该同步控制单元分布于多台服务器上实现。
12.如权利要求9所述的缓存管理系统,其特征在于,该压缩模块和该解压缩模块利用Gzip算法实现,和/或,每个片段小于1M。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310287563.9A CN103870393B (zh) | 2013-07-09 | 2013-07-09 | 缓存管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310287563.9A CN103870393B (zh) | 2013-07-09 | 2013-07-09 | 缓存管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870393A true CN103870393A (zh) | 2014-06-18 |
CN103870393B CN103870393B (zh) | 2017-05-17 |
Family
ID=50908947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310287563.9A Active CN103870393B (zh) | 2013-07-09 | 2013-07-09 | 缓存管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870393B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447167A (zh) * | 2015-12-04 | 2016-03-30 | 北京奇虎科技有限公司 | 分布式系统中节点缓存数据的处理方法及装置 |
CN105824763A (zh) * | 2015-11-16 | 2016-08-03 | 广东亿迅科技有限公司 | 一种缓存服务实现方法 |
CN105975352A (zh) * | 2016-04-28 | 2016-09-28 | 努比亚技术有限公司 | 一种缓存数据处理方法及服务器 |
CN106021569A (zh) * | 2016-05-31 | 2016-10-12 | 广东能龙教育股份有限公司 | 一种解决Hibernate分布式数据缓存的方法与系统 |
CN108009019A (zh) * | 2016-10-29 | 2018-05-08 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算系统 |
CN109194720A (zh) * | 2018-08-15 | 2019-01-11 | 京信通信系统(中国)有限公司 | 主备机数据同步方法、装置和计算机设备 |
CN109379395A (zh) * | 2018-08-22 | 2019-02-22 | 中国平安人寿保险股份有限公司 | 一种接口数据缓存设置方法及终端设备 |
CN112685454A (zh) * | 2021-03-10 | 2021-04-20 | 江苏金恒信息科技股份有限公司 | 工业数据分级存储系统、方法及工业数据分级查询方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493821A (zh) * | 2008-01-25 | 2009-07-29 | 中兴通讯股份有限公司 | 数据缓存方法和装置 |
CN102314397A (zh) * | 2011-09-23 | 2012-01-11 | 浙江大学 | 缓存数据块的处理方法 |
CN102511043A (zh) * | 2011-11-26 | 2012-06-20 | 华为技术有限公司 | 缓存文件替换方法、装置及系统 |
CN102867070A (zh) * | 2012-09-29 | 2013-01-09 | 瑞庭网络技术(上海)有限公司 | 更新key-value分布式存储系统缓存的方法 |
CN102999522A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据存储方法和装置 |
-
2013
- 2013-07-09 CN CN201310287563.9A patent/CN103870393B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493821A (zh) * | 2008-01-25 | 2009-07-29 | 中兴通讯股份有限公司 | 数据缓存方法和装置 |
CN102999522A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据存储方法和装置 |
CN102314397A (zh) * | 2011-09-23 | 2012-01-11 | 浙江大学 | 缓存数据块的处理方法 |
CN102511043A (zh) * | 2011-11-26 | 2012-06-20 | 华为技术有限公司 | 缓存文件替换方法、装置及系统 |
CN102867070A (zh) * | 2012-09-29 | 2013-01-09 | 瑞庭网络技术(上海)有限公司 | 更新key-value分布式存储系统缓存的方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824763A (zh) * | 2015-11-16 | 2016-08-03 | 广东亿迅科技有限公司 | 一种缓存服务实现方法 |
CN105824763B (zh) * | 2015-11-16 | 2019-05-17 | 广东亿迅科技有限公司 | 一种缓存服务实现方法 |
CN105447167A (zh) * | 2015-12-04 | 2016-03-30 | 北京奇虎科技有限公司 | 分布式系统中节点缓存数据的处理方法及装置 |
CN105447167B (zh) * | 2015-12-04 | 2019-03-01 | 北京奇虎科技有限公司 | 分布式系统中节点缓存数据的处理方法及装置 |
CN105975352A (zh) * | 2016-04-28 | 2016-09-28 | 努比亚技术有限公司 | 一种缓存数据处理方法及服务器 |
CN105975352B (zh) * | 2016-04-28 | 2019-08-30 | 努比亚技术有限公司 | 一种缓存数据处理方法及服务器 |
CN106021569A (zh) * | 2016-05-31 | 2016-10-12 | 广东能龙教育股份有限公司 | 一种解决Hibernate分布式数据缓存的方法与系统 |
CN108009019A (zh) * | 2016-10-29 | 2018-05-08 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算系统 |
CN109194720A (zh) * | 2018-08-15 | 2019-01-11 | 京信通信系统(中国)有限公司 | 主备机数据同步方法、装置和计算机设备 |
CN109379395A (zh) * | 2018-08-22 | 2019-02-22 | 中国平安人寿保险股份有限公司 | 一种接口数据缓存设置方法及终端设备 |
CN109379395B (zh) * | 2018-08-22 | 2022-11-11 | 中国平安人寿保险股份有限公司 | 一种接口数据缓存设置方法及终端设备 |
CN112685454A (zh) * | 2021-03-10 | 2021-04-20 | 江苏金恒信息科技股份有限公司 | 工业数据分级存储系统、方法及工业数据分级查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103870393B (zh) | 2017-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870393A (zh) | 缓存管理方法及系统 | |
US10984018B2 (en) | System, methods, and media for compressing non-relational database objects | |
CN109783438B (zh) | 基于librados的分布式NFS系统及其构建方法 | |
US10063665B2 (en) | System and method to eliminate duplicate byte patterns in network streams | |
US7272613B2 (en) | Method and system for managing distributed content and related metadata | |
CN104580226B (zh) | 一种共享会话数据的系统和方法 | |
US10558565B2 (en) | Garbage collection implementing erasure coding | |
EP1892921B1 (en) | Method and system for managing distributed content and related metadata | |
CN103138912B (zh) | 数据同步方法及系统 | |
CN105138615A (zh) | 一种构建大数据分布式日志的方法和系统 | |
CN104618506A (zh) | 一种众包的内容分发网络系统、方法与装置 | |
CN102546776B (zh) | 一种san共享文件系统中实现离线读文件的方法 | |
CN104008152A (zh) | 支持海量数据访问的分布式文件系统的架构方法 | |
CN105472002A (zh) | 基于集群节点间即时拷贝的会话同步方法 | |
CN109756573B (zh) | 一种基于区块链的文件系统 | |
CN107302582B (zh) | 千万级物联网场景的数据采集及弱推送方法 | |
CN101710902A (zh) | 一种无结构p2p网络及其数据查询方法和索引更新方法 | |
CN103944993A (zh) | 百万级用户同时在线移动平台服务器架构 | |
CN103731507A (zh) | 一种分布式数据存储设备处理数据的方法及装置 | |
CN104539982A (zh) | 一种视频点对点资源共享调度方法、系统及节点终端 | |
US10642520B1 (en) | Memory optimized data shuffle | |
CN104967660B (zh) | 一种面向多云架构的网络性能提升方法 | |
US9866623B2 (en) | System and method for optimizing inter-node communication in content distribution network | |
US20230252029A1 (en) | On-board data storage method and system | |
CN107180034A (zh) | MySQL数据库的集群系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160301 Address after: 200335 Shanghai city Changning District Admiralty Road No. 968 Building No. 16 10 floor Applicant after: SHANGHAI XIECHENG BUSINESS CO., LTD. Address before: 200335 Shanghai City, Changning District Fuquan Road No. 99, Ctrip network technology building Applicant before: Ctrip computer technology (Shanghai) Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |