CN104794146B - 商品实时筛选和排序的方法和装置 - Google Patents
商品实时筛选和排序的方法和装置 Download PDFInfo
- Publication number
- CN104794146B CN104794146B CN201410822945.1A CN201410822945A CN104794146B CN 104794146 B CN104794146 B CN 104794146B CN 201410822945 A CN201410822945 A CN 201410822945A CN 104794146 B CN104794146 B CN 104794146B
- Authority
- CN
- China
- Prior art keywords
- commodity
- ordered set
- data
- real time
- constraints
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及商品实时筛选和排序的方法和装置,方法包括以下步骤:创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件为约束条件在redis实例中创建有序集合;遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件的数据导入对应的有序集合中;接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面。通过使用Redis取代传统的数据库,能够实时获取最新的商品数据;Redis的有序集合能够存储不同的排序方式,更新和读取操作代价比使用数据库索引快。
Description
技术领域
本发明涉及数据处理领域,具体涉及商品实时筛选和排序的方法和装置。
背景技术
基于电商平台,每天有不同的品牌上线销售,数据变化大,因为用户抢购的时间段集中,访问频率高,很多商品在筛选和排序时还是有库存,实际下订单时已售罄,造成用户体验差。现有的排序和筛选解决方案,一般基于数据库实现,其中包含的主要动作包括更新商品的实时属性,根据指定的筛选和排序条件查询数据库获得商品列表。基于上述解决方案严重依赖数据库的性能,在高峰期查询量巨大的情况下,会造成数据库连接不足,处理缓慢的情况。进而导致用户打开商品页面缓慢,极大影响了用户的购物体验。并且当需要扩展性能时,关系型数据库通常需要停止服务才能操作。因此传统的关系型数据库无法满足当前电商站点高并发的查询,扩展性不够灵活,无法快速响应业务需求的迭代。
发明内容
为了克服现有技术的不足,本发明的目的在于提供商品实时筛选和排序的方法和装置,通过使用Redis取代传统的数据库,能够实时获取最新的商品数据;Redis的有序集合能够存储不同的排序方式,更新和读取操作代价比使用数据库索引快,而且Redis支持异步IO请求,能够极大提升用户请求的响应速度,部署方便,扩展性能好。
为解决上述问题,本发明所采用的技术方案如下:
方案一:
商品实时筛选和排序的方法,包括以下步骤:
S101:创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件作为约束条件在redis实例中创建一个有序集合;
S102:遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件中的数据导入对应的有序集合中进行排序;
S103:接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面。
进一步地,在S101中,在redis实例中还创建一个商品信息集合;在S102中,从商品数据源中将商品ID和商品详细信息导入至商品信息集合中;在S103中,对应于商品ID的商品详细信息从商品信息集合中获取。
进一步地,在S102中还包括:当有序集合中的排序条件中的数据发生变化时,该有序集合执行一次遍历操作,使有序集合中的商品ID和对应的排序条件中的数据重新排序。
进一步地,商品数据源和有序集合之间的数据导入方式为异步批量操作。
方案二:
商品实时筛选和排序的装置,包括以下模块:
模块A:用于创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件作为约束条件在redis实例中创建一个有序集合;
模块B:用于遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件中的数据导入对应的有序集合中进行排序;
模块C:用于接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面。
进一步地,在模块A中,在redis实例中还创建一个商品信息集合;在模块B中,从商品数据源中将商品ID和商品详细信息导入至商品信息集合中;在模块C中,对应于商品ID的商品详细信息从商品信息集合中获取。
进一步地,在模块B中还包括:当有序集合中的排序条件中的数据发生变化时,该有序集合执行一次遍历操作,使有序集合中的商品ID和对应的排序条件中的数据重新排序。
进一步地,商品数据源和有序集合之间的数据导入方式为异步批量操作。
相比现有技术,本发明的有益效果在于:通过使用Redis取代传统的数据库,能够实时获取最新的商品数据;通过设计Redis的有序集合中的数据存储结构,以不同的约束条件实现存储商品不同的排序方式,其更新和读取操作代价比使用数据库索引快,Redis支持异步IO请求,能够极大提升用户请求的响应速度,能够应对大并发的数据处理,而且redis部署方便,扩展性能好。
附图说明
图1为本发明商品实时筛选和排序的方法的流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
参考图1,商品实时筛选和排序的方法,包括以下步骤:
S101:创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件作为约束条件在redis实例中创建一个有序集合;在redis实例中还创建一个商品信息集合。
Redis是一个高性能的key-value存储***,并且提供了多种数据存储类型,包括字符串、双向链表、hash表、集合和有序集合。在该步骤中,商品包括多种属性,品牌ID为其中一个属性,即每个商品均有其对应的唯一品牌ID,而同一品牌ID下可包括多个商品。排序条件中包括价格属性、折扣属性和人工序列属性,但不限于以上属性,每次只能选择其中一种属性作为排序条件,其中人工序列指预定义的一种人为序列。筛选条件中包括商品类别属性、尺码属性和库存属性,但不限于以上属性,可以选择其中的一种或多种属性作为筛选条件,筛选条件还可以选择为空,即不筛选。品牌ID、排序条件和筛选条件为组合条件进行全组合,例如其中一个组合会是,品牌100、价格属性和商品类别属性,则品牌100、价格属性和商品类别也作为有序集合的约束条件。
S102:遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件中的数据导入对应的有序集合中进行排序,从商品数据源中将商品ID和商品详细信息导入至商品信息集合中。
其中,有序集合中包括key和value,详细存储结构如下:
Key:品牌ID+排序条件+筛选条件
Value:
Field | Score |
商品ID | 排序条件(如价格或人工序列等) |
集合中也包括key和value,详细存储结构如下:
Key:商品ID
Value:商品详细信息
为了更好地描述该方案,使方案更加清楚,下面举例说明:
例如,品牌ID为100的品牌下面有三个商品,其商品的信息如下:
商品id | 库存 | 价格 | 人工序列 | 品类 | 尺码 |
1001 | 100 | 3 | 2 | 上衣 | XL |
1002 | 2 | 100 | 1 | 鞋子 | 43 |
1003 | 0 | 100 | 3 | 裤子 | L |
下面是约束条件为品牌100、价格属性和库存的有序集合:
Key:100_1_all
Value:
Field | Score |
1001 | 3 |
1002 | 100 |
1003 | 100+1000 |
其中针对库存对Score进行如下处理:
If(库存>0)
score=price
else
score=price+1000
上述代码的意思是将库存为0的商品的价格加一个数字(数字不限定为1000),目的是将库存为0的商品排在有序集合中的最后。
下面是约束条件为品牌100、人工序列属性和库存属性的有序集合:
Key:100_2_all
Value:
Field | Score |
1002 | 1 |
1001 | 2 |
1003 | 3+1000 |
至于商品信息集合中则存储有商品ID和对应的商品详细信息,只需要根据商品ID即可获取其商品详细信息。
在S102步骤中,当有序集合中的排序条件中的数据发生变化时,该有序集合则执行一次遍历操作,使有序集合中的商品ID和对应的排序条件中的数据重新排序,保证有序集合中的数据排序可以实时更新。其中,数据变化可以是前端页面的操作产生的数据变化,也可以是管理员对数据进行了操作。
S103:接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面,对应于商品ID的商品详细信息从商品信息集合中获取。
在该步骤中,用户通过前端页面选择了相应的品牌ID、排序条件和筛选条件后则生成了带有约束条件的数据请求,根据约束条件便可找到相应的有序集合,然后获取该有序集合中的商品ID的序列,再通过商品ID从商品信息集合中获取相应的商品详细信息,最后返回已经排好序列的商品详细信息至前端页面中。
在本发明中,redis实例的数据操作均在内存中执行,效率非常高,能最大程度保证数据更新的实时性,而传统数据库需要获取相应排列数据时,需要对全量数据做排序和筛选,不在数据库缓存中的数据需要从磁盘加载,效率低,即使通过索引获取数据的效率也远低于redis的操作效率。当访问量很大时,可以通过部署多个redis实例,针对客户端的访问量进行负载均衡操作。当商品数据量庞大,单个redis实例无法保存全部商品数据时,可以通过数据分片的方式以多个redis实例保存全部数据。
本发明通过使用Redis取代传统的数据库,能够实时获取最新的商品数据;通过设计Redis的有序集合中的数据存储结构,以不同的约束条件实现存储商品不同的排序方式,其更新和读取操作代价比使用数据库索引快,Redis支持异步IO请求,能够极大提升用户请求的响应速度,能够应对大并发的数据处理,而且redis部署方便,扩展性能好。
基于上述的商品实时筛选和排序的方法,还对应有商品实时筛选和排序的装置,包括以下模块:
模块A:用于创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件作为约束条件在redis实例中创建一个有序集合;
模块B:用于遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件中的数据导入对应的有序集合中进行排序;
模块C:用于接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面。
进一步地,在模块A中,在redis实例中还创建一个商品信息集合;在模块B中,从商品数据源中将商品ID和商品详细信息导入至商品信息集合中;在模块C中,对应于商品ID的商品详细信息从商品信息集合中获取。
进一步地,在模块B中还包括:当有序集合中的排序条件中的数据发生变化时,该有序集合执行一次遍历操作,使有序集合中的商品ID和对应的排序条件中的数据重新排序。
进一步地,商品数据源和有序集合之间的数据导入方式为异步批量操作。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
Claims (8)
1.商品实时筛选和排序的方法,其特征在于,包括以下步骤:
S101:创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件作为约束条件在redis实例中创建一个有序集合;
S102:遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件中的数据导入对应的有序集合中进行排序;
S103:接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面。
2.根据权利要求1所述的商品实时筛选和排序的方法,其特征在于,在S101中,在redis实例中还创建一个商品信息集合;在S102中,从商品数据源中将商品ID和商品详细信息导入至商品信息集合中;在S103中,对应于商品ID的商品详细信息从商品信息集合中获取。
3.根据权利要求1所述的商品实时筛选和排序的方法,其特征在于,在S102中还包括:当有序集合中的排序条件中的数据发生变化时,该有序集合执行一次遍历操作,使有序集合中的商品ID和对应的排序条件中的数据重新排序。
4.根据权利要求1所述的商品实时筛选和排序的方法,其特征在于,商品数据源和有序集合之间的数据导入方式为异步批量操作。
5.商品实时筛选和排序的装置,其特征在于,包括以下模块:
模块A:用于创建redis实例,以商品的品牌ID、排序条件和筛选条件为组合条件进行全组合,每个组合分别以相应的组合条件作为约束条件在redis实例中创建一个有序集合;
模块B:用于遵循对应的约束条件从商品数据源中将商品ID和对应的排序条件中的数据导入对应的有序集合中进行排序;
模块C:用于接收前端页面所发送的带有约束条件的数据请求,根据约束条件找到相应的有序集合,按照该有序集合中的商品ID的排序方式将对应于商品ID的商品详细信息返回至前端页面。
6.根据权利要求5所述的商品实时筛选和排序的装置,其特征在于,在模块A中,在redis实例中还创建一个商品信息集合;在模块B中,从商品数据源中将商品ID和商品详细信息导入至商品信息集合中;在模块C中,对应于商品ID的商品详细信息从商品信息集合中获取。
7.根据权利要求5所述的商品实时筛选和排序的装置,其特征在于,在模块B中还包括:当有序集合中的排序条件中的数据发生变化时,该有序集合执行一次遍历操作,使有序集合中的商品ID和对应的排序条件中的数据重新排序。
8.根据权利要求5所述的商品实时筛选和排序的装置,其特征在于,商品数据源和有序集合之间的数据导入方式为异步批量操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410822945.1A CN104794146B (zh) | 2014-12-22 | 2014-12-22 | 商品实时筛选和排序的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410822945.1A CN104794146B (zh) | 2014-12-22 | 2014-12-22 | 商品实时筛选和排序的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794146A CN104794146A (zh) | 2015-07-22 |
CN104794146B true CN104794146B (zh) | 2017-11-03 |
Family
ID=53558938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410822945.1A Active CN104794146B (zh) | 2014-12-22 | 2014-12-22 | 商品实时筛选和排序的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794146B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512295A (zh) * | 2015-12-10 | 2016-04-20 | 网易(杭州)网络有限公司 | 呈现信息的方法、装置及信息*** |
CN105976212B (zh) * | 2016-05-30 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 一种商品展示方法、装置与电子商务平台 |
CN108932248B (zh) * | 2017-05-24 | 2022-01-28 | 苏宁易购集团股份有限公司 | 一种搜索实现方法及*** |
CN107133362A (zh) * | 2017-06-01 | 2017-09-05 | 北京凤凰理理它信息技术有限公司 | 商品信息搜索方法、***、计算机程序及电子设备 |
CN108615167B (zh) * | 2018-03-15 | 2021-03-23 | 宁波财经学院 | 一种排位*** |
CN108647347B (zh) * | 2018-05-14 | 2023-07-11 | 中国平安财产保险股份有限公司 | 分页显示方法、用户设备、存储介质及装置 |
CN109032511B (zh) * | 2018-07-09 | 2022-05-13 | 武汉斗鱼网络科技有限公司 | 一种数据存储方法、服务器及存储介质 |
CN109544199B (zh) * | 2018-10-11 | 2021-06-01 | 口碑(上海)信息技术有限公司 | 一种确定商品销售量的方法、装置、设备和存储介质 |
CN109767282A (zh) * | 2018-11-20 | 2019-05-17 | 北京五八亚太企业管理服务有限公司 | 智能化商品筛选方法及装置、电子设备 |
CN110209720A (zh) * | 2019-05-23 | 2019-09-06 | 上海易点时空网络有限公司 | 榜单数据的管理方法及装置 |
CN110781217B (zh) * | 2019-09-20 | 2023-11-24 | 中国平安人寿保险股份有限公司 | 排序数据的处理方法、装置及存储介质、服务器 |
CN112558845A (zh) * | 2019-09-25 | 2021-03-26 | 北京国双科技有限公司 | 表格操作方法及表格操作装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222100A (zh) * | 2011-06-21 | 2011-10-19 | 青岛海信传媒网络技术有限公司 | 商品信息存取的方法及装置 |
CN102955802A (zh) * | 2011-08-25 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 从数据报表中获取数据的方法和装置 |
CN103473267A (zh) * | 2013-08-09 | 2013-12-25 | 深圳市中科新业信息科技发展有限公司 | 数据存储查询方法及*** |
CN103646111A (zh) * | 2013-12-25 | 2014-03-19 | 普元信息技术股份有限公司 | 大数据环境下实现实时数据关联的***及方法 |
-
2014
- 2014-12-22 CN CN201410822945.1A patent/CN104794146B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222100A (zh) * | 2011-06-21 | 2011-10-19 | 青岛海信传媒网络技术有限公司 | 商品信息存取的方法及装置 |
CN102955802A (zh) * | 2011-08-25 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 从数据报表中获取数据的方法和装置 |
CN103473267A (zh) * | 2013-08-09 | 2013-12-25 | 深圳市中科新业信息科技发展有限公司 | 数据存储查询方法及*** |
CN103646111A (zh) * | 2013-12-25 | 2014-03-19 | 普元信息技术股份有限公司 | 大数据环境下实现实时数据关联的***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104794146A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104794146B (zh) | 商品实时筛选和排序的方法和装置 | |
CN107239891B (zh) | 一种基于大数据的招投标审核方法 | |
KR101806055B1 (ko) | 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생 | |
US8108411B2 (en) | Methods and systems for merging data sets | |
JP6088506B2 (ja) | 範囲に基づく検索のためのデータ格納の管理 | |
CN103177117B (zh) | 信息索引***及信息索引的更新方法 | |
AU2017243870B2 (en) | "Methods and systems for database optimisation" | |
JP7011848B2 (ja) | 大規模データセットの高速検索またはフィルタリングのためのシステム、方法、およびデータ構造 | |
US20110264651A1 (en) | Large scale entity-specific resource classification | |
CN106021256A (zh) | 使用基于云的对象存储的消除重复分布式文件*** | |
US9852453B2 (en) | High-throughput message generation | |
KR20090075885A (ko) | 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템 | |
CN102402605A (zh) | 用于搜索引擎索引的混合分布模型 | |
US20140046928A1 (en) | Query plans with parameter markers in place of object identifiers | |
CN104516910A (zh) | 在客户端服务器环境中推荐内容 | |
CN107229718A (zh) | 处理报表数据的方法和装置 | |
CN104572860A (zh) | 一种数据处理方法和*** | |
CN106503274A (zh) | 一种数据整合与搜索方法及服务器 | |
CN106649368A (zh) | 数据存储方法、装置和数据查询方法、装置 | |
US20190362016A1 (en) | Frequent pattern analysis for distributed systems | |
CN111625561A (zh) | 一种数据查询方法及装置 | |
CN111125499A (zh) | 数据查询方法及装置 | |
CN105550347B (zh) | 数据处理方法及装置 | |
CN103761233A (zh) | 处理数据库操作请求的方法、设备和*** | |
US11055269B2 (en) | Efficient ingest and search of access controlled records |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180413 Address after: 510000 Guangzhou City, Guangzhou, Guangdong, Fangcun Avenue, one of the 314 self compiled Patentee after: Guangzhou Pinwei Software Co., Ltd. Address before: 510370 Guangdong, Guangzhou, Fangcun, No., No. 20 Huahai street, building 1-5 Patentee before: Guangzhou VIPSHOP Information and Technology Co., Ltd. |
|
TR01 | Transfer of patent right |