`
superlxw1234
  • 浏览: 551494 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44453
社区版块
存档分类
最新评论

利用Redis的有序集合做购物车商品相关性分析

阅读更多

本文所指的“商品的相关性”,就是依据与某个商品同时出现在购物车中次数最多的商品。

 

实际应用场景有:
1. 在某一商品的detail页面,推荐给用户与该商品相关的N个商品;
2. 在添加购物车成功页面,当用户把一个商品添加到购物车,推荐给用户N个与之相关的商品;
3. 在货架上将相关性比较高的几个商品摆放在一起;

利用Redis的有序集合做法如下:

每种商品构建一个有序集合,集合的成员为和该商品同时出现在购物车中的商品,成员的score为同时出现的次数。

每次P_AP_B商品同时出现在购物车中时候,分别更新RedisP_AP_B对应的有序集合,

 

zincrby shopcart:product:P_A 1 P_B
zincrby shopcart:product:P_B 1 P_A

使它们同时出现在购物车中的次数+1

假设实际场景如下步骤:

第一步:milkegg同时出现在购物车中,那么更新这两个商品对应的有序集合:

 

redis127.0.0.1:6379> zincrby shopcart:product:milk 1 egg
"1"
redis127.0.0.1:6379> zincrby shopcart:product:egg 1 milk
"1"

此时,这两个产品的有序集合为:

redis127.0.0.1:6379> zrevrange shopcart:product:milk 0 -1
1)"egg"
redis127.0.0.1:6379> zrevrange shopcart:product:egg 0 -1
1) "milk"

 

 

第二步:milkbread同时出现在购物车中,那么更新这两个商品对应的有序集合:

redis127.0.0.1:6379> zincrby shopcart:product:milk 1 bread
"1"
redis127.0.0.1:6379> zincrby shopcart:product:bread 1 milk
"1"
redis127.0.0.1:6379>

 

此时,这两个产品的有序集合为:

redis127.0.0.1:6379> zrevrange shopcart:product:milk 0 -1
1)"egg"
2)"bread"
redis127.0.0.1:6379> zrevrange shopcart:product:bread 0 -1
1)"milk"

 

 

第三步:milkbread又一次同时出现在购物车中:

redis127.0.0.1:6379> zincrby shopcart:product:milk 1 bread
"2"
redis127.0.0.1:6379> zincrby shopcart:product:bread 1 milk
"2"

 

此时,这两个产品的有序集合为:

redis127.0.0.1:6379> zrevrange shopcart:product:milk 0 -1
1)"bread"
2)"egg"
redis127.0.0.1:6379> zrevrange shopcart:product:bread 0 -1
1)"milk"

 

此时可以看到,与milk同时出现在购物车中次数最多的商品为bread;

第四步:。。。。

 

实际使用的场景:根据一个商品P_ARedis中该商品的有序集合shopcart:product:P_A中根据SCORE值降序排列,获取到与之最相关的N个商品,在货架上将这N个商品与P_A同时摆放,或者,在用户购买P_A时,将这N个商品推荐给用户。

zrevrange shopcart:product:P_A 0 N-1

 

0
2
分享到:
评论
1 楼 xrzs1986 2013-11-17  
思路不错,化繁为简~

相关推荐

    Redis有序集合类型(SortedSet)常用命令演示和实践练习代码

    在这个实战项目中,我们将深入探讨Redis有序集合类型(SortedSet)的常用命令,并通过Java实现商品管理功能,包括增删改查和分类查找,以及根据浏览量进行排序。 首先,我们来了解下Redis有序集合的基础知识。有序...

    redis有序集合性能 列表、集合、有序集合1

    有序集合结合了集合和列表的特点,既可以进行排序,又能保持元素的唯一性,是Redis中非常强大且灵活的数据结构。在实际应用中,根据具体需求,合理选择列表、集合或有序集合,可以有效提高数据处理的效率和存储的...

    Redis 有序集合(sorted set)1

    Redis 有序集合(Sorted Set)是一种特殊的集合数据结构,它结合了集合的无重复成员特性与分数的概念,可以根据成员的分数进行排序。有序集合中的每个成员都有一个与之关联的double类型的分数,这个分数用于决定成员...

    redis、java 购物车,推荐系统

    它以内存中的数据结构存储数据,支持多种数据类型,如字符串、哈希、列表、集合、有序集合等,这使得Redis非常适合用来处理高并发的实时数据操作,如购物车的添加、删除商品等。 在购物车场景中,Java作为后端开发...

    Redis有序集合类型的操作_动力节点Java学院整理

    Redis有序集合(Sorted Set)是Redis中的一种数据结构,它结合了集合(Set)与哈希表(Hash Table)的特点,不仅包含唯一成员,而且每个...在实际应用中,合理利用Redis有序集合可以极大地优化数据检索性能,提高用户体验。

    利用Redis的有序集合实现排行榜功能实例代码

    Redis的有序集合(Sorted Set,或简称为ZSet)是一个非常强大的数据结构,它结合了集合的唯一性以及每个成员关联的分数,从而能够按分数排序。在游戏排行榜的实现中,有序集合是一个理想的选择,因为它能高效地处理...

    Redis有序集合类型的常用命令小结

    Redis中的有序集合是一种数据结构,它结合了集合与分数的概念,提供了一种基于分数排序的元素集合。有序集合中的每个元素都有一个唯一的成员(member)和一个与之关联的分数(score),分数决定了成员在集合中的排序...

    使用Redis有序集合实现IP归属地查询详解

    针对IP归属地查询这一常见的需求,本文将探讨如何利用Redis的有序集合(Sorted Set)来实现快速的查询操作,避免传统关系型数据库带来的IO消耗和速度瓶颈。 有序集合是Redis中的一个数据结构,它结合了集合与哈希表...

    基于redis的购物车.docx

    本方案采用Redis作为数据存储,利用其Hash结构来实现用户购物车的数据存储。Redis的Hash数据结构允许我们将用户购物车中的每一项商品及其相关信息(如商品ID、名称、单价、数量、图片和小计)以键值对的形式存储。...

    基于Redis缓存商城分类以及商品信息Demo

    "基于Redis缓存商城分类以及商品信息Demo"是一个很好的实践案例,它利用Redis的高性能特性来提升商城系统的性能。以下将详细讲解这个Demo所涉及的知识点。 1. Redis简介: Redis是一个开源的、基于内存的数据结构...

    Redis学习集合包

    这是我个人这段时间学习Redis的集合,有Redis的简单测试,Redis的Cluster集群、Redis的Sentinel主从集群、Tomcat+Redis的Session存储、还有基于Spring-data-redis的使用。分享出来给大家,下载可以直接使用,快速...

    ASP.NET Core +WebAPI+MVC+Redis 模拟购物车功能

    在这个项目中,我们将结合WebAPI、MVC和Redis来模拟一个购物车功能,利用EFCore处理数据库操作,Redis作为缓存来提升性能。 首先,让我们深入了解一下每个组件: 1. **ASP.NET Core MVC**:模型-视图-控制器(MVC...

    phpredis扩展集合

    通过这个扩展,开发者可以使用PHP代码直接操作Redis的数据结构,如字符串、哈希、列表、集合和有序集合等。 **安装PHP Redis扩展** 安装PHP Redis扩展的过程因PHP版本不同而略有差异。确保你已经知道当前PHP的版本...

    redis存储List集合

    Redis是一个开源的、高性能的键值存储系统,支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。在这个示例中,重点是利用Redis的列表(List)数据结构。 在描述中提到的是一个C# Winform应用程序,它...

    【电商项目实战】商品详情显示与Redis存储购物车信息

    它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这使得它非常适合处理购物车这类复杂的数据结构需求。 在购物车应用中,我们可以将每个用户的购物车视为一个独立的键,键的值可以是一个哈希(Hash)...

    在springboot中利用Redis实现延迟队列完整案例

    利用Redis来实现延迟队列的主要思路是借助Redis的Sorted Set数据类型来实现。 具体做法是将任务的执行时间作为分数(score),任务的内容作为值(value),将任务按照执行时间排序存储在有序集合中。然后周期性地...

    Redis 15.有序集合(3)集合运算操作.flv

    Redis 15.有序集合(3)集合运算操作.flv

    python redis连接 有序集合去重的代码

    本篇文章将详细讲解如何使用Python连接Redis,并利用有序集合实现数据去重。 首先,我们需要导入必要的库,包括`redis`模块,它提供了Python与Redis服务器交互的接口。在代码中,我们看到`constant`模块导入了Redis...

Global site tag (gtag.js) - Google Analytics