[发明专利]一种数据库缓存的方法有效
申请号: | 201110083447.6 | 申请日: | 2011-04-02 |
公开(公告)号: | CN102117338A | 公开(公告)日: | 2011-07-06 |
发明(设计)人: | 官文吉 | 申请(专利权)人: | 天脉聚源(北京)传媒科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100007 北京市东*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 缓存 方法 | ||
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库缓存的方法。
背景技术
在面临大规模访问的网络应用中,数据库往往成为整个系统的瓶颈。为减少数据库访问压力,当前互联网应用广泛的采用诸如MemCache之类的缓存机制,用于缓存数据,以减少应用服务器对数据库的访问次数,提高系统响应效率。当前各类文件缓存、内存缓存系统发展迅速,为应用程序开发者提供了很多选择,这些缓存往往采用Key-Value的映射机制,每一个Key(键值或者缓存名称)对应一个具体的Value(存储内容),应用程序通过特定的Key来写入或者读取所需的数据,并设置为一定长度的缓存过期时间,缓存系统根据这一时间来维护这些缓存数据。
现有技术方案在进行缓存处理时,会先按照当前内容来设定不同的key,并将对应内容写入到该Key相关的缓存中去,缓存的Key命名规则通常与内容数据存在某种直接联系,如图1所示,例如ID(数据库中内容的主键或者内容的其它形式唯一标识符)为10的这一条内容其缓存Key可以命名为single_10,这种机制使得通过内容的ID能够得到与之相关的缓存Key。
由于采用缓存的原因,在需要数据的时候,应用程序直接从缓存中读取数据,固然使得数据的访问更快,系统压力减少,但也正由于缓存的关系,使得数据往往不能得到及时更新,在一些关键性数据需要实时修改更新时,现有办法或者在写入缓存时,便将其过期时间设置较短,或者向缓存系统请求删除某个Key,或者干脆整体清空缓存。
现有方案解决单条内容的缓存比较容易实现,但对于保存内容列表的集合型缓存则很难处理。
现有对缓存的使用或者简单依赖缓存的自动过期时间,将其设置的较短,使其不至于延时过长,但在一些非常关键的敏感性内容必须被修改、删除时,即便设置了相对较短的缓存时间,但在这一时间内,本来应该被删除或更新的内容仍然能够被访问到,会造成较大的内容安全问题。
采用整体清空缓存的办法固然能够解决数据更新不及时的问题,但是会导致系统负载上升,尤其是这一操作比较频繁时,缓存基本失去其应有效果。
而采用请求缓存系统删除单个Key的时候,适用于单个内容的缓存,而不适用于许多内容的集合型缓存。当数据非常庞大的时候,由于内容展现的复杂性,同样的一条内容有很大概率在不同的列表区域展现,如图2所示,例如Content1这一条内容,可能在多个内容列表中多次出现,而缓存体系会将整个列表区域整体缓存,例如建立了key为list_n的集合缓存,其Value包含了所有该列表拥有的所有内容,以便应用程序能够一次读取所有数据,起到缓存的目的。
现有对缓存的使用方法,在大规模数据中,很难低性能消耗的快速找到所有包含该内容的集合型缓存,并保证所有缓存都及时更新,显然简单的删除一个Key不能解决这一问题。
发明内容
本发明的目的在于提出一种数据库缓存的方法,在兼顾访问性能的同时,实现可索引的缓存,解决了涉及内容安全性等需要及时更新内容时的技术问题。
为达此目的,本发明采用以下技术方案:
一种数据库缓存的方法,包括以下步骤:
A、数据库生成一条缓存时,将缓存数据存放在缓存中的常规区域,缓存数据包括一个列表请求的所有内容;
B、生成包含所述所有内容的唯一标识符的数组数据,存放在缓存中的映射区域,所述数组数据的键值与所述缓存数据的键值对应;
C、需要更新或者删除一条内容时,建立一个值为空的数据,存放在缓存中的更新区域,所述空值数据的键值包含所述一条内容的唯一标识符;
D、当访问数据集合时,根据命名规则生成数据集合对应的键值;
E、查找映射区域,判断是否存在与数据集合对应的键值相同的键值,如果不存在,则转至步骤F,如果存在,则转至步骤G;
F、确认缓存中没有需要访问的数据集合,访问数据库,获取需要访问的数据集合,进行输出;
G、从映射区域取出键值对应的数组,获得数组包含的所述所有内容的唯一标识符;
H、根据所述所有内容的唯一标识符,逐个判断在更新区域中是否存在与唯一标识符相同的键值,如果存在,则转至步骤I,如果不存在,则转至步骤J;
I、删除常规区域中的所述缓存数据,访问数据库,获取需要访问的数据集合,进行输出;
J、从常规区域获得缓存数据,进行输出。
缓存中的常规区域和映射区域设置有过期时间,过期时间到达时,删除常规区域和映射区域的所有数据。
步骤F中,获取需要访问的数据集合后,将返回步骤A。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天脉聚源(北京)传媒科技有限公司,未经天脉聚源(北京)传媒科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110083447.6/2.html,转载请声明来源钻瓜专利网。