更新key-value分布式存储系统缓存的方法技术方案

技术编号:8191032 阅读:289 留言:0更新日期:2013-01-10 01:55
本发明专利技术公开了一种更新key-value分布式存储系统缓存的方法,包括:发起查询操作,为每一个表分配一列名,构建关键字;不存在所述关键字对应缓存的数据,查询数据库保存结果S,若存在对应的缓存,那么直接返回结果S;利用查询操作使用所述关键字key,将返回的结果S放到key-value系统,所述关键字对应的值为S;查询操作根据所述列名构建关键字组;将关键字登记到关键字组对应的值中;返回结果S;发起更新操作,根据更新条件构建关键字组;根据该关键组在缓存中查询是否有对应的值,若存在对应的值则删除对应值,完成更新;否则,无更新。本发明专利技术能持久保持key-value分布式存储系统缓存的同时在数据更新的时候相关的缓存能立即被清除掉,能保证用户看到的数据是最新的。

【技术实现步骤摘要】

本专利技术涉及计算机领域,特别是涉及一种。
技术介绍
随着互联网的飞速发展,使用网络的人也越来越多,如何快速响应用户的请求已经是各个互联网公司争取用户的最重要的手段之一。例如一个网站提供的内容很好,很有价值,但是用户每次访问都要等待几十秒钟,那么时间长了用户肯定会流失。解决快速响应的最核心的技术点就是如何高效的利用缓存,因为相对于从关系数据库查询来说,直接从缓存取数据要快的多,通常从缓存中取数据最少要比从关系数据库中取数据要快10倍以上,而且可以支持更大的并发访问量。关系数据库以下简称数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。目前主流的关系数据库有oracle、SQL、access、db2、sqlserver, sybase等。一个关系数据库是包含进入预先定义的种类之内的一组表格。每个表格(有时被称为一个关系)包含用列表不的一个或更多的数据种类。每行包含一个唯一的数据实体,这些数据是被列定义的种类。举例来说,典型的商业订单条目数据库会包括一个用列表示的描述一个客户信息的表格名字、住址、电话号码,等等。另外的一个表格会描述一个订单产品、客户、日期、销售价格,等等。数据库的一个使用者可以获得适合了该使用者的需要的数据库的观点。举例来说,一位分公司办公室经理可能喜欢在一个特定的日期之后已经买产品的所有客户的一项观点或报告。同一家公司的财务服务经理可能从相同的表格获得关于需要被支付的帐户的报告。关系数据库的优点很明显,就是功能强大,可以按照各种条件筛选,缺点也很明显,当同时访问超过1000个的时候,性能就变得很低。缓存这里说的缓存是指基于key-value的分布式存储方案,key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。如果辅以Real-Time Search Engine (实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。而MySQL,在几百个并发连接下,就基本上崩溃了。现在互联网公司基本都认识到关系数据库已经成为网站做大最强的瓶颈,一般也都会使用缓存保存从数据库中查询到的结果,以满足更大的并发量。但是一般都会有二个问题,第一,在某个表没有更新时可以支持很大的访问量,但是当表有更新的时候,由于不能精确的删除相关的缓存,只能将整个表的缓存都清空掉,这样虽然下次缓存数据和数据库保持一致了,但是缓存清空的瞬间,数据库的压力立即变大,系统很可能会崩溃。第二,针对前一种情况,将缓存保持的时间比较短一些,有数据更新的时候,不用清除整表的缓存,等着它自然过期,这样的好处是数据的压力不会突然增大,但是缺点也是显而易见的,就是新的数据不能被用户实时的看见。
技术实现思路
本专利技术要解决的技术问题是提供一种,使缓存能持久保持的同时在数据更新的时候相关的缓存能立即被清除掉,能保证用户看到的数据是最新的。为解决上述技术问题,本专利技术,包括(I)发起查询操作,为每一个表分配一列名,该关键字代表本次查询,用于从key-value系统中检查是否有缓存的数据;不存在所述关键字对应缓存的数据,查询数据库保存结果S,若存在对应的缓存, 那么直接返回结果S ;(2)利用查询操作使用所述关键字key,将返回的结果S放到key-value系统中,记录步骤(I)中关键字对应的值value为S ;(3)查询操作根据所述列名构建关键字组keygroup,用于保存步骤(I)中的关键字 key ;(4)将关键字登记到关键字组对应的值value中;(5)返回结果S ;(6)发起更新操作,更新数据库;(7)更新操作根据更新条件采用与步骤(3)中相同的算法构建关键字组;(8)根据该关键组keygroup在缓存中查询是否有对应的值value,若存在对应的值则在key-value系统中删除对应值,完成更新;若不存在对应的值结束,无更新。其中,实施步骤(I)采用算法“前缀_表名_SQL条件”构建关键字key。其中,实施步骤(3)采用算法“表名_列名_值”构建关键字组keygroup。本专利技术在传统的缓存方案基础上通过一次查询请求将原来简单的关键字key=〉值value结构,构建为关键字组keyGroup=〉关键字key=〉值value结构,当有数据有更新的时候,能通过更新请求根据关键字组keyGroup算出曾经相关的查询关键字key,并且删除这些缓存,实现缓存的更新。附图说明下面结合附图与具体实施方式对本专利技术作进一步详细的说明 图I是本专利技术的流程图。具体实施例方式如图I所示,本专利技术,包括(I)发起查询操作,为每一个表分配一列名,同时采用算法“前缀_表名_SQL条件”构建关键字key,该关键字代表本次查询,用于从key-value系统中检查是否有缓存的数据;不存在所述关键字对应缓存的数据,查询数据库保存结果S,若存在对应的缓存,那么直接返回结果S ;(2)利用查询操作使用所述关键字key,将返回的结果S放到key-value系统中,记录步骤(I)中关键字对应的值value为S ;(3)查询操作根据所述列名采用算法“表名_列名_值”构建关键字组keygroup,用于保存步骤(I)中的关键字key ;(4)将关键字登记到关键字组的值value中;(5)返回结果S ;( 6 )发起更新操作,更新数据库;(7)更新操作根据更新条件采用与步骤(3)中相同的算法构建关键字组; (8)根据该关键组keygroup在缓存中查询是否有对应的值value,若存在对应的值则在key-value系统中删除对应值,完成更新;若不存在对应的值结束,无更新。具体实施时,首先声明一个对象,包含查询操作find,删除操作delete,更新操作update,插入操作insert方法;调用该对象的查询操作find,发起查询操作,为每一个表分配一列名,同时构建关键字key (采用算法“前缀_表名_SQL条件”),该关键字key代表本次查询,用于从key-value系统中检查是否有缓存的数据;不存在所述关键字对应缓存的数据,查询数据库得到结果S ;若存在对应的缓存,那么直接返回结果S ;利用查询操作find使用所述关键字key,将返回的结果S放到key-value系统中,记录步骤(I)中关键字对应的值value为S,形成关系key=>S查询操作find根据所述列名构建关键字组keygroup (采用算法“表名_列名_值”),用于保存步骤(I)中的关键字key ;查询操作find将关键字key登记到关键字组keygroup的对应的值value中形成关系 keygroup=>key=>S返回结果S ;发起更新操作update,更新操作update更新数据库,更新操作update根据更新条件构造出一个关键字组keyGroup (采用算法“表名_列名_值”);更新操作update根据keyGroup在key-value系统缓存中查询出对应的值value,若存在对应本文档来自技高网
...

【技术保护点】
一种更新key?value分布式存储系统缓存的方法,其特征是,包括:(1)发起查询操作,为每一个表分配一列名,构建关键字key,该关键字代表本次查询;不存在所述关键字对应缓存的数据,查询数据库保存结果S,若存在对应的缓存,那么直接返回结果S;(2)利用查询操作使用所述关键字key,将返回的结果S放到key?value系统中,记录步骤(1)中关键字对应的值value为S;(3)查询操作根据所述列名构建关键字组keygroup,用于保存步骤(1)中的关键字key;(4)将关键字登记到关键字组对应的值value中;(5)返回结果S;(6)发起更新操作,更新数据库;(7)更新操作根据更新条件采用与步骤(3)中相同的算法构建关键字组;(8)根据该关键组keygroup在缓存中查询是否有对应的值value,若存在对应的值则在key?value系统中删除对应值,完成更新;若不存在对应的值结束,无更新。

【技术特征摘要】

【专利技术属性】
技术研发人员:宋武斌胡志明张尔宁
申请(专利权)人:瑞庭网络技术上海有限公司
类型:发明
国别省市:

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

1