CN109460404A - 一种基于redis的高效Hbase分页查询方法 - Google Patents
一种基于redis的高效Hbase分页查询方法 Download PDFInfo
- Publication number
- CN109460404A CN109460404A CN201811019690.XA CN201811019690A CN109460404A CN 109460404 A CN109460404 A CN 109460404A CN 201811019690 A CN201811019690 A CN 201811019690A CN 109460404 A CN109460404 A CN 109460404A
- Authority
- CN
- China
- Prior art keywords
- redis
- page
- data
- hbase
- rowkey
- 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
本发明涉及Hbase分页查询技术领域,具体涉及一种基于redis的高效Hbase分页查询方法,包括如下步骤:对Hbase表的数据生成Rowkey;设置扫描数据的最大条数、根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;根据查询条件生成redis中用于存储Rowkey信息的key、根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中;取数据的时候直接从redis中查找。本发明的有益效果:通过redis缓存技术将Hbase表数据的分页信息缓存起来,web端进行分页查询的时候根据条件生成对应的key先到redis中获取,如果redis中没有再进行查询并对分页相关信息进行保存,极大提高了查询时的响应速度。
Description
技术领域
本发明涉及Hbase分页查询技术领域,具体涉及一种基于redis的高效Hbase分页查询方法。
背景技术
随着信息技术的不断发展,近些年来,海量的数据成为最具价值的财富。在信息传播极其迅速的今天各种数据渗透着我们的生活,它们以指数级的速度增长,数据爆炸将我们带入大数据时代。大数据开始蔓延到社会的各行各业从而影响着我们的学习、工作、生活以及社会的发展,因此大数据的相关研究受到中央和地方政府、各大科研机构和各类企业的高度关注。
在大部分web信息系统中,都存储着大量甚至是海量的数据,分页查询是其中必不可少的一项技术。传统的关系型数据库有着强大的SQL语言,具有一套完整成熟的分页查询方法。
HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
中国专利“CN103617232一种针对Hbase表的分页查询方法”所述的技术方案在实现Hbase分页时,将所有的Hbase表数据进行顺序编号,该编号是查询时的唯一条件,现实环境中很多情况下会有各种复杂的查询需求,简单的顺序编号无法满足;如果数据有删除动作的话,之前的顺序编号和数据的总数也需要进行调整,代价巨大。
发明内容
本发明的目的在于克服现有技术中存在的问题,提供一种基于redis的高效Hbase分页查询方法,它可以实现提高查询的响应速度、成本低。
为实现上述技术目的,达到上述技术效果,本发明是通过以下技术方案实现的:
一种基于redis的高效Hbase分页查询方法,其包括如下步骤:
Step1,对Hbase表的数据生成Rowkey;
Step2,设置扫描数据的最大条数;
Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;
Step4,根据查询条件生成redis中用于存储Rowkey信息的key;
Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:
1)根据查询条件判断当前页Rowkey信息在redis中是否存在;
2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;
3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex-1)*pageSize;
4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值为扫描最大条数的倍数时停止遍历,遍历过程中判断当前页n,当前页前两页n-1、n-2,当前页后两页n+1、n+2Rowkey信息在redis中是否存在,如果不存在则写入redis中,并返回计算出的数据总数total;
5)从redis中取出当前页的Rowkey信息作为startRow,加上之前的endRow和pageSize生成pageFilter到Hbase中取出指定页码和条数的数据;
Step6,取数据的时候直接从redis中查找。
进一步地,所述Step1中的Hbase表中数据根据Rowkey的字典顺序排序,具体排序方法为:将数据Rowkey中的时间使用一个数字常量减去数据实际时间进行存储,即:Tm-Tc,其中,Tm为常量Long.MAX,Tc为数据实际时间。
进一步地,所述Step3中获取指定页码的startRow存储在redis中的key,所述key的存储规则为:项目名称+域名称+方法名称+查询参数。
本发明的有益效果:通过redis缓存技术将Hbase表数据的分页信息缓存起来,web端进行分页查询的时候根据条件生成对应的key先到redis中获取,如果redis中没有再进行查询并对分页相关信息进行保存,极大提高了查询时的响应速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的方法流程图;
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示的一种基于redis的高效Hbase分页查询方法,其包括如下步骤:
Step1,对Hbase表的数据生成Rowkey;
Step2,设置扫描数据的最大条数,根据实际情况设置扫描数据的最大条数,这样每次最多扫描至最大条数数据,每最大条数的数据记录一个index,数据rowKey写入redis缓存中,跳页的时候最多只能跳转到当前扫描出来的最大页码;
Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter,根据查询条件无法获取指定页码的startRow,只能拼出分页中第一页第一条数据的Rowkey,也就是最原始的起始行数据,需要在后续的步骤中查找出指定页码的startRow;
Step4,根据查询条件生成redis中用于存储Rowkey信息的key;
Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:
1)根据查询条件判断当前页Rowkey信息在redis中是否存在;
2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;
3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex-1)*pageSize;
4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值为扫描最大条数的倍数时停止遍历,遍历过程中判断当前页n,当前页前两页n-1、n-2,当前页后两页n+1、n+2Rowkey信息在redis中是否存在,如果不存在则写入redis中,并返回计算出的数据总数total;
5)从redis中取出当前页的Rowkey信息作为startRow,加上之前的endRow和pageSize生成pageFilter到Hbase中取出指定页码和条数的数据;
Step6,取数据的时候直接从redis中查找,redis中会保存对应条件的startRow,根据Step4生成的key直接到redis中取数据。
所述Step1中的Hbase表中的数据根据Rowkey的字典顺序排序,具体排序方法为:将数据Rowkey中的时间使用一个数字常量减去数据实际时间进行存储,即:Tm-Tc,其中,Tm为常量Long.MAX,Tc为数据实际时间,优化查询进度,使查询时,响应更迅速。
所述Step3中获取指定页码的startRow存储在redis中的key,所述key的存储规则为:项目名称+域名称+方法名称+查询参数,确保key唯一,不会产生冲突。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (3)
1.一种基于redis的高效Hbase分页查询方法,其特征在于,其包括如下步骤:
Step1,对Hbase表的数据生成Rowkey;
Step2,设置扫描数据的最大条数;
Step3,根据所查询的页码和每页的数据行数以及其他查询条件,生成查询范围startRow、endRow,以及pagefilter;
Step4,根据查询条件生成redis中用于存储Rowkey信息的key;
Step5,根据查询条件从Hbase中scan,并将扫描出来的当前页、前两页和后两页第一条数据的rowKey信息保存到redis中,具体步骤如下:
1)根据查询条件判断当前页Rowkey信息在redis中是否存在;
2)根据查询条件判断当前页的前两页以及后两页Rowkey信息在redis中是否存在;
3)如果当前页Rowkey信息在redis中存在,以该Rowkey作为startRow,设置数据总数total初始值为(pageIndex-1)*pageSize;
4)根据设置的条件对Hbase表进行scan遍历,每读取一条数据total+1,当scan出来的result为空或者total值为扫描最大条数的倍数时停止遍历,遍历过程中判断当前页n,当前页前两页n-1、n-2,当前页后两页n+1、n+2Rowkey信息在redis中是否存在,如果不存在则写入redis中,并返回计算出的数据总数total;
5)从redis中取出当前页的Rowkey信息作为startRow,加上之前的endRow和pageSize生成pageFilter到Hbase中取出指定页码和条数的数据;
Step6,取数据的时候直接从redis中查找。
2.根据权利要求1所述的一种基于redis的高效Hbase分页查询方法,其特征在于,所述Step1中的Hbase表中数据根据Rowkey的字典顺序排序,具体排序方法为:将数据Rowkey中的时间使用一个数字常量减去数据实际时间进行存储,即:Tm-Tc,其中,Tm为常量Long.MAX,Tc为数据实际时间。
3.根据权利要求1所述的一种基于redis的高效Hbase分页查询方法,其特征在于,所述Step3中获取指定页码的startRow存储在redis中的key,所述key的存储规则为:项目名称+域名称+方法名称+查询参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811019690.XA CN109460404A (zh) | 2018-09-03 | 2018-09-03 | 一种基于redis的高效Hbase分页查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811019690.XA CN109460404A (zh) | 2018-09-03 | 2018-09-03 | 一种基于redis的高效Hbase分页查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109460404A true CN109460404A (zh) | 2019-03-12 |
Family
ID=65606454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811019690.XA Pending CN109460404A (zh) | 2018-09-03 | 2018-09-03 | 一种基于redis的高效Hbase分页查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109460404A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781238A (zh) * | 2019-10-08 | 2020-02-11 | 中国建设银行股份有限公司 | 基于Redis、Hbase结合的客户视图缓存方法和装置 |
CN111367952A (zh) * | 2020-03-02 | 2020-07-03 | 中国邮政储蓄银行股份有限公司 | 缓存数据的分页查询方法、系统及计算机可读存储介质 |
CN111400347A (zh) * | 2020-03-20 | 2020-07-10 | 北京思特奇信息技术股份有限公司 | 一种分页查询方法、系统和电子设备 |
CN112069207A (zh) * | 2020-08-27 | 2020-12-11 | 重庆攸亮科技股份有限公司 | 一种多表联合查询效率提升方法 |
CN112434070A (zh) * | 2020-12-14 | 2021-03-02 | 四川长虹电器股份有限公司 | 一种基于相似度算法的分页查询方法 |
CN112437160A (zh) * | 2020-11-25 | 2021-03-02 | 中国电子科技集团公司第二十九研究所 | 一种基于redis实现大文件实时传输处理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN103617232A (zh) * | 2013-11-26 | 2014-03-05 | 北京京东尚科信息技术有限公司 | 一种针对HBase表的分页查询方法 |
CN103678408A (zh) * | 2012-09-21 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种查询数据的方法及装置 |
CN105045932A (zh) * | 2015-09-02 | 2015-11-11 | 南京邮电大学 | 一种基于降序存储的数据分页查询方法 |
CN106021357A (zh) * | 2016-05-09 | 2016-10-12 | 泰华智慧产业集团股份有限公司 | 基于分布式的大数据分页查询方法及系统 |
-
2018
- 2018-09-03 CN CN201811019690.XA patent/CN109460404A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN103678408A (zh) * | 2012-09-21 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种查询数据的方法及装置 |
CN103617232A (zh) * | 2013-11-26 | 2014-03-05 | 北京京东尚科信息技术有限公司 | 一种针对HBase表的分页查询方法 |
CN105045932A (zh) * | 2015-09-02 | 2015-11-11 | 南京邮电大学 | 一种基于降序存储的数据分页查询方法 |
CN106021357A (zh) * | 2016-05-09 | 2016-10-12 | 泰华智慧产业集团股份有限公司 | 基于分布式的大数据分页查询方法及系统 |
Non-Patent Citations (1)
Title |
---|
莫为: "hbase+springboot+redis实现分页", 《博客园》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781238A (zh) * | 2019-10-08 | 2020-02-11 | 中国建设银行股份有限公司 | 基于Redis、Hbase结合的客户视图缓存方法和装置 |
CN110781238B (zh) * | 2019-10-08 | 2022-09-13 | 中国建设银行股份有限公司 | 基于Redis、Hbase结合的客户视图缓存方法和装置 |
CN111367952A (zh) * | 2020-03-02 | 2020-07-03 | 中国邮政储蓄银行股份有限公司 | 缓存数据的分页查询方法、系统及计算机可读存储介质 |
CN111367952B (zh) * | 2020-03-02 | 2023-08-25 | 中国邮政储蓄银行股份有限公司 | 缓存数据的分页查询方法、系统及计算机可读存储介质 |
CN111400347A (zh) * | 2020-03-20 | 2020-07-10 | 北京思特奇信息技术股份有限公司 | 一种分页查询方法、系统和电子设备 |
CN112069207A (zh) * | 2020-08-27 | 2020-12-11 | 重庆攸亮科技股份有限公司 | 一种多表联合查询效率提升方法 |
CN112069207B (zh) * | 2020-08-27 | 2023-10-03 | 重庆攸亮科技股份有限公司 | 一种多表联合查询效率提升方法 |
CN112437160A (zh) * | 2020-11-25 | 2021-03-02 | 中国电子科技集团公司第二十九研究所 | 一种基于redis实现大文件实时传输处理方法及系统 |
CN112437160B (zh) * | 2020-11-25 | 2022-06-07 | 中国电子科技集团公司第二十九研究所 | 一种基于redis实现大文件实时传输处理方法及系统 |
CN112434070A (zh) * | 2020-12-14 | 2021-03-02 | 四川长虹电器股份有限公司 | 一种基于相似度算法的分页查询方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460404A (zh) | 一种基于redis的高效Hbase分页查询方法 | |
US11580176B2 (en) | Search infrastructure | |
US8630972B2 (en) | Providing context for web articles | |
US9262511B2 (en) | System and method for indexing streams containing unstructured text data | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN100454305C (zh) | 文档管理方法和装置以及文档搜索方法和装置 | |
CN103150362B (zh) | 一种视频搜索方法及系统 | |
CN103177027A (zh) | 获取动态Feed索引的方法和系统 | |
CN102436513A (zh) | 分布式检索方法和系统 | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、系统及存储介质 | |
CN109766318B (zh) | 文件读取方法及装置 | |
US20150058352A1 (en) | Thin database indexing | |
Kucukyilmaz et al. | A machine learning approach for result caching in web search engines | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
CN101751408A (zh) | 一种互联网文内广告的系统与方法 | |
CN101963993A (zh) | 一种数据库单表记录快速查找的方法 | |
CN116662327B (zh) | 一种用于数据库的数据融合清理方法 | |
CN111061972B (zh) | 一种用于url路径匹配的ac查找优化方法和装置 | |
JP2010128812A (ja) | データ管理システム及びデータ管理方法及びデータ管理プログラム | |
CN115495462A (zh) | 批量数据更新方法、装置、电子设备和可读存储介质 | |
US9292553B2 (en) | Queries for thin database indexing | |
CN105243099A (zh) | 一种基于翻译文件的大数据实时存储方法 | |
CN114063931B (zh) | 一种基于大数据的数据存储方法 | |
CN109657108B (zh) | 一种域名资产数据存储和查询方法和系统 | |
CN109325023B (zh) | 一种数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190312 |