CN102867070A - 更新key-value分布式存储***缓存的方法 - Google Patents
更新key-value分布式存储***缓存的方法 Download PDFInfo
- Publication number
- CN102867070A CN102867070A CN2012103780400A CN201210378040A CN102867070A CN 102867070 A CN102867070 A CN 102867070A CN 2012103780400 A CN2012103780400 A CN 2012103780400A CN 201210378040 A CN201210378040 A CN 201210378040A CN 102867070 A CN102867070 A CN 102867070A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- key word
- buffer memory
- cache
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种更新key-value分布式存储***缓存的方法,包括:发起查询操作,为每一个表分配一列名,构建关键字;不存在所述关键字对应缓存的数据,查询数据库保存结果S,若存在对应的缓存,那么直接返回结果S;利用查询操作使用所述关键字key,将返回的结果S放到key-value***,所述关键字对应的值为S;查询操作根据所述列名构建关键字组;将关键字登记到关键字组对应的值中;返回结果S;发起更新操作,根据更新条件构建关键字组;根据该关键组在缓存中查询是否有对应的值,若存在对应的值则删除对应值,完成更新;否则,无更新。本发明能持久保持key-value分布式存储***缓存的同时在数据更新的时候相关的缓存能立即被清除掉,能保证用户看到的数据是最新的。
Description
技术领域
本发明涉及计算机领域,特别是涉及一种更新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,在几百个并发连接下,就基本上崩溃了。
现在互联网公司基本都认识到关系数据库已经成为网站做大最强的瓶颈,一般也都会使用缓存保存从数据库中查询到的结果,以满足更大的并发量。但是一般都会有二个问题,第一,在某个表没有更新时可以支持很大的访问量,但是当表有更新的时候,由于不能精确的删除相关的缓存,只能将整个表的缓存都清空掉,这样虽然下次缓存数据和数据库保持一致了,但是缓存清空的瞬间,数据库的压力立即变大,***很可能会崩溃。第二,针对前一种情况,将缓存保持的时间比较短一些,有数据更新的时候,不用清除整表的缓存,等着它自然过期,这样的好处是数据的压力不会突然增大,但是缺点也是显而易见的,就是新的数据不能被用户实时的看见。
发明内容
本发明要解决的技术问题是提供一种更新key-value分布式存储***缓存的方法,使缓存能持久保持的同时在数据更新的时候相关的缓存能立即被清除掉,能保证用户看到的数据是最新的。
为解决上述技术问题,本发明更新key-value分布式存储***缓存的方法,包括:
(1)发起查询操作,为每一个表分配一列名,该关键字代表本次查询,用于从key-value***中检查是否有缓存的数据;
不存在所述关键字对应缓存的数据,查询数据库保存结果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***中删除对应值,完成更新;若不存在对应的值结束,无更新。
其中,实施步骤(1)采用算法“前缀_表名_SQL条件”构建关键字key。
其中,实施步骤(3)采用算法“表名_列名_值”构建关键字组keygroup。
本发明在传统的缓存方案基础上通过一次查询请求将原来简单的关键字key=>值value结构,构建为关键字组keyGroup=>关键字key=>值value结构,当有数据有更新的时候,能通过更新请求根据关键字组keyGroup算出曾经相关的查询关键字key,并且删除这些缓存,实现缓存的更新。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是本发明的流程图。
具体实施方式
如图1所示,本发明更新key-value分布式存储***缓存的方法,包括:
(1)发起查询操作,为每一个表分配一列名,同时采用算法“前缀_表名_SQL条件”构建关键字key,该关键字代表本次查询,用于从key-value***中检查是否有缓存的数据;
不存在所述关键字对应缓存的数据,查询数据库保存结果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***中删除对应值,完成更新;若不存在对应的值结束,无更新。
具体实施时,首先声明一个对象,包含查询操作find,删除操作delete,更新操作update,***操作insert方法;
调用该对象的查询操作find,发起查询操作,为每一个表分配一列名,同时构建关键字key(采用算法“前缀_表名_SQL条件”),该关键字key代表本次查询,用于从key-value***中检查是否有缓存的数据;
不存在所述关键字对应缓存的数据,查询数据库得到结果S;若存在对应的缓存,那么直接返回结果S;
利用查询操作find使用所述关键字key,将返回的结果S放到key-value***中,记录步骤(1)中关键字对应的值value为S,形成关系key=>S
查询操作find根据所述列名构建关键字组keygroup(采用算法“表名_列名_值”),用于保存步骤(1)中的关键字key;
查询操作find将关键字key登记到关键字组keygroup的对应的值value中形成关系keygroup=>key=>S
返回结果S;
发起更新操作update,更新操作update更新数据库,更新操作update根据更新条件构造出一个关键字组keyGroup(采用算法“表名_列名_值”);
更新操作update根据keyGroup在key-value***缓存中查询出对应的值value,若存在对应的值则在key-value***中删除对应值,完成更新,此时这个值value是key;若不存在对应的值结束,无更新。
key是之前使用查询操作find产生的key,有可能这个查询还会被调用,所以此时更新操作update删除key对应的value,这样下次,如果使用查询操作find还是调用key查询缓存的话,由于以前的缓存已经被删除,所以查询操作find自动会去数据库中查找最新的内容。
以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (3)
1.一种更新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***中删除对应值,完成更新;若不存在对应的值结束,无更新。
2.如权利要求1所述更新key-value分布式存储***缓存的方法,其特征是:实施步骤(1)采用算法“前缀_表名_SQL条件”构建关键字key。
3.如权利要求1所述更新key-value分布式存储***缓存的方法,其特征是:实施步骤(3)采用算法“表名_列名_值”构建关键字组keygroup。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103780400A CN102867070A (zh) | 2012-09-29 | 2012-09-29 | 更新key-value分布式存储***缓存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103780400A CN102867070A (zh) | 2012-09-29 | 2012-09-29 | 更新key-value分布式存储***缓存的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102867070A true CN102867070A (zh) | 2013-01-09 |
Family
ID=47445939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103780400A Pending CN102867070A (zh) | 2012-09-29 | 2012-09-29 | 更新key-value分布式存储***缓存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102867070A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218455A (zh) * | 2013-05-07 | 2013-07-24 | 中国人民解放军国防科学技术大学 | Key-Value数据库用户请求的高速并发处理方法 |
CN103338243A (zh) * | 2013-06-20 | 2013-10-02 | 新浪网技术(中国)有限公司 | Web节点的缓存数据更新方法和*** |
CN103870393A (zh) * | 2013-07-09 | 2014-06-18 | 携程计算机技术(上海)有限公司 | 缓存管理方法及*** |
CN103902698A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
CN103902701A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
CN103902702A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
CN104050276A (zh) * | 2014-06-26 | 2014-09-17 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库的缓存处理方法及*** |
CN104102669A (zh) * | 2013-04-12 | 2014-10-15 | 同程网络科技股份有限公司 | 机票查询方法 |
CN104765782A (zh) * | 2015-03-20 | 2015-07-08 | 五八同城信息技术有限公司 | 一种索引排序更新方法及装置 |
CN105516346A (zh) * | 2015-12-30 | 2016-04-20 | 广东欧珀移动通信有限公司 | 一种缓存策略的解析方法及装置 |
CN105740383A (zh) * | 2016-01-27 | 2016-07-06 | 中国科学院计算技术研究所 | 一种大数据平台下数据库与缓存的数据一致性方法及*** |
CN105988899A (zh) * | 2015-03-05 | 2016-10-05 | 广州市动景计算机科技有限公司 | 实现数据缓存的方法和装置 |
CN106649585A (zh) * | 2016-11-18 | 2017-05-10 | 福建中金在线信息科技有限公司 | 一种检索的方法及装置 |
CN106919628A (zh) * | 2015-12-28 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 一种图数据的处理方法和装置 |
CN107508878A (zh) * | 2017-08-17 | 2017-12-22 | 杭州时趣信息技术有限公司 | 一种基于缓存代理服务器的键名删除方法及装置 |
CN108153911A (zh) * | 2018-01-24 | 2018-06-12 | 广西师范学院 | 数据的分布式云存储方法 |
CN108255959A (zh) * | 2017-12-21 | 2018-07-06 | 武汉斑马快跑科技有限公司 | 一种Redis中数据查询方法及装置 |
CN109491987A (zh) * | 2018-11-01 | 2019-03-19 | 恒生电子股份有限公司 | 数据管理方法与装置 |
CN111046106A (zh) * | 2019-12-19 | 2020-04-21 | 杭州中恒电气股份有限公司 | 缓存数据同步方法、装置、设备及介质 |
CN112559244A (zh) * | 2019-09-25 | 2021-03-26 | 北京国双科技有限公司 | 数据处理方法、装置、电子设备和计算机可读介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117338A (zh) * | 2011-04-02 | 2011-07-06 | 天脉聚源(北京)传媒科技有限公司 | 一种数据库缓存的方法 |
US20110246518A1 (en) * | 2010-04-01 | 2011-10-06 | Verizon Patent And Licensing Inc. | Method and system of distributed caching |
-
2012
- 2012-09-29 CN CN2012103780400A patent/CN102867070A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246518A1 (en) * | 2010-04-01 | 2011-10-06 | Verizon Patent And Licensing Inc. | Method and system of distributed caching |
CN102117338A (zh) * | 2011-04-02 | 2011-07-06 | 天脉聚源(北京)传媒科技有限公司 | 一种数据库缓存的方法 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102669A (zh) * | 2013-04-12 | 2014-10-15 | 同程网络科技股份有限公司 | 机票查询方法 |
CN103218455A (zh) * | 2013-05-07 | 2013-07-24 | 中国人民解放军国防科学技术大学 | Key-Value数据库用户请求的高速并发处理方法 |
CN103338243A (zh) * | 2013-06-20 | 2013-10-02 | 新浪网技术(中国)有限公司 | Web节点的缓存数据更新方法和*** |
CN103870393A (zh) * | 2013-07-09 | 2014-06-18 | 携程计算机技术(上海)有限公司 | 缓存管理方法及*** |
CN103902701A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
CN103902702A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
CN103902698B (zh) * | 2014-03-31 | 2018-04-13 | 北京皮尔布莱尼软件有限公司 | 一种数据存储***和存储方法 |
CN103902702B (zh) * | 2014-03-31 | 2017-11-28 | 北京皮尔布莱尼软件有限公司 | 一种数据存储***和存储方法 |
CN103902698A (zh) * | 2014-03-31 | 2014-07-02 | 北京车商汇软件有限公司 | 一种数据存储***和存储方法 |
CN104050276A (zh) * | 2014-06-26 | 2014-09-17 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库的缓存处理方法及*** |
CN104050276B (zh) * | 2014-06-26 | 2017-08-01 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库的缓存处理方法及*** |
CN105988899A (zh) * | 2015-03-05 | 2016-10-05 | 广州市动景计算机科技有限公司 | 实现数据缓存的方法和装置 |
CN105988899B (zh) * | 2015-03-05 | 2019-04-02 | 广州市动景计算机科技有限公司 | 实现数据缓存的方法和装置 |
CN104765782A (zh) * | 2015-03-20 | 2015-07-08 | 五八同城信息技术有限公司 | 一种索引排序更新方法及装置 |
CN104765782B (zh) * | 2015-03-20 | 2019-06-21 | 五八同城信息技术有限公司 | 一种索引排序更新方法及装置 |
CN106919628A (zh) * | 2015-12-28 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 一种图数据的处理方法和装置 |
CN105516346A (zh) * | 2015-12-30 | 2016-04-20 | 广东欧珀移动通信有限公司 | 一种缓存策略的解析方法及装置 |
CN105516346B (zh) * | 2015-12-30 | 2018-09-21 | 广东欧珀移动通信有限公司 | 一种缓存策略的解析方法及装置 |
CN105740383A (zh) * | 2016-01-27 | 2016-07-06 | 中国科学院计算技术研究所 | 一种大数据平台下数据库与缓存的数据一致性方法及*** |
CN106649585A (zh) * | 2016-11-18 | 2017-05-10 | 福建中金在线信息科技有限公司 | 一种检索的方法及装置 |
CN107508878A (zh) * | 2017-08-17 | 2017-12-22 | 杭州时趣信息技术有限公司 | 一种基于缓存代理服务器的键名删除方法及装置 |
CN107508878B (zh) * | 2017-08-17 | 2020-08-11 | 杭州时趣信息技术有限公司 | 一种基于缓存代理服务器的键名删除方法及装置 |
CN108255959A (zh) * | 2017-12-21 | 2018-07-06 | 武汉斑马快跑科技有限公司 | 一种Redis中数据查询方法及装置 |
CN108153911A (zh) * | 2018-01-24 | 2018-06-12 | 广西师范学院 | 数据的分布式云存储方法 |
CN109491987A (zh) * | 2018-11-01 | 2019-03-19 | 恒生电子股份有限公司 | 数据管理方法与装置 |
CN112559244A (zh) * | 2019-09-25 | 2021-03-26 | 北京国双科技有限公司 | 数据处理方法、装置、电子设备和计算机可读介质 |
CN111046106A (zh) * | 2019-12-19 | 2020-04-21 | 杭州中恒电气股份有限公司 | 缓存数据同步方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102867070A (zh) | 更新key-value分布式存储***缓存的方法 | |
CN104850572B (zh) | HBase非主键索引构建与查询方法及其*** | |
CN104123340B (zh) | 一种数据库分表分页查询方法及*** | |
EP3519986B1 (en) | Direct table association in in-memory databases | |
EP2605158B1 (en) | Mixed join of row and column database tables in native orientation | |
US11119742B2 (en) | Cache efficient reading of result values in a column store database | |
EP2874077B1 (en) | Stateless database cache | |
US20120310934A1 (en) | Historic View on Column Tables Using a History Table | |
US20160253382A1 (en) | System and method for improving a query response rate by managing a column-based store in a row-based database | |
US9183267B2 (en) | Linked databases | |
US10025710B2 (en) | Pattern for integrating primary and secondary data stores in a sharded data domain | |
US10437688B2 (en) | Enhancing consistent read performance for in-memory databases | |
JP2003006036A (ja) | クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム | |
WO2020005937A1 (en) | Techniques for enabling and integrating in-memory semi-structered data and text document searches with in-memory columnar query processing | |
US9229960B2 (en) | Database management delete efficiency | |
KR101400214B1 (ko) | Hybrid C 인터페이스를 지원하는 장치 | |
CN102339315A (zh) | 一种广告数据的索引更新方法和*** | |
CN102968456B (zh) | 一种栅格数据读取处理方法和装置 | |
CN105740383A (zh) | 一种大数据平台下数据库与缓存的数据一致性方法及*** | |
CN108665335B (zh) | 处理购物网站的购物车数据的方法 | |
CN103365987B (zh) | 一种基于共享磁盘架构的集群数据库***及数据处理方法 | |
JP5235483B2 (ja) | データベースと仮想テーブルの整合性を維持する方法および装置。 | |
US9229969B2 (en) | Management of searches in a database system | |
WO2016032574A1 (en) | Serialized child associations in parent record | |
KR102415155B1 (ko) | 데이터 검색 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130109 |