本文所指的“商品的相关性”,就是依据与某个商品同时出现在购物车中次数最多的商品。
实际应用场景有:
1. 在某一商品的detail页面,推荐给用户与该商品相关的N个商品;
2. 在添加购物车成功页面,当用户把一个商品添加到购物车,推荐给用户N个与之相关的商品;
3. 在货架上将相关性比较高的几个商品摆放在一起;
利用Redis的有序集合做法如下:
每种商品构建一个有序集合,集合的成员为和该商品同时出现在购物车中的商品,成员的score为同时出现的次数。
每次P_A和P_B商品同时出现在购物车中时候,分别更新Redis中P_A和P_B对应的有序集合,
zincrby shopcart:product:P_A 1 P_B
zincrby shopcart:product:P_B 1 P_A
使它们同时出现在购物车中的次数+1。
假设实际场景如下步骤:
第一步:milk和egg同时出现在购物车中,那么更新这两个商品对应的有序集合:
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"
第二步:milk和bread同时出现在购物车中,那么更新这两个商品对应的有序集合:
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"
第三步:milk和bread又一次同时出现在购物车中:
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_A从Redis中该商品的有序集合shopcart:product:P_A中根据SCORE值降序排列,获取到与之最相关的N个商品,在货架上将这N个商品与P_A同时摆放,或者,在用户购买P_A时,将这N个商品推荐给用户。
zrevrange shopcart:product:P_A 0 N-1
相关推荐
1.1 列表 1.1.1 命令 1.1.2 内部编码 1.1.3 使用场景 1.2 集合 1.2.1 命令 1.2.2 内部编码 1.2.3 使用场景 1.3
Redis 有序集合命令命令及描述ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在
在JAVA中使用Redis有序集合类型的常用命令的演示及一个简单的实战项目: 具备增删改查和分类查找及按浏览量排序的商品管理功能
主要给大家介绍了关于如何利用Redis的有序集合实现排行榜功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
redis命令集合,redis命令详解 适合全体类型的命令 EXISTS key 判断一个键是否存在;存在返回 1;否则返回0; DEL key 删除某个key,或是一系列key;DEL key1 key2 key3 key4 TYPE key 返回某个key元素的数据类型 ( none:...
这个是基于redis的购物车流程 所有的数据都是储存在redis中 redis的hash结构来储存所有用户购物车的数据。咱们都知道在使用hash的时候,涉及到key,field,value这三个方面的参数信息 购物车中包含 商品总件数,总价格...
Redis中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作。集合的元素依然是不能够相同的,但是分数可以相同。 下面列举有序集合...
redis、java 购物车,推荐系统,有相关jar,有利于初学者学习
今天通过本文给大家说一下Redis中最后一个数据类型 “有序集合类型”,需要的的朋友参考下吧
Redis中SortedSet(有序集合)的个人总结
主要介绍了使用Redis有序集合实现IP归属地查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这是我个人这段时间学习Redis的集合,有Redis的简单测试,Redis的Cluster集群、Redis的Sentinel主从集群、Tomcat+Redis的Session存储、还有基于Spring-data-redis的使用。分享出来给大家,下载可以直接使用,快速...
利用Redis来实现延迟队列的主要思路是借助Redis的Sorted Set数据类型来实现。 具体做法是将任务的执行时间作为分数(score),任务的内容作为值(value),将任务按照执行时间排序存储在有序集合中。然后周期性地...
Redis 15.有序集合(3)集合运算操作.flv
redis命令集合及入门案例,redis缓存命令,set 添加key-value set username admin,set 添加key-value set username admin
第11周-第12章节-Python3.5-Redis 集合set 和有序集合操作.mp4
Redis 13.有序集合(1)基本操作.flv