分析用户购买行为。
例如:
在某一商品的 detail 页面,推荐给用户与该商品相关的其他商品;
在添加购物车成功页面,当用户把一个商品添加到购物车,推荐给用户与之相关的其他商品;
在货架上将相关性比较高的几个商品摆放在一起。
public class ShoppingMallDemo { public static void main(String[] args) { Jedis jedis = new Jedis(host, port); try { //ApsaraDB for Redis的实例密码 String authString = jedis.auth(host+":"+password);//password if (!authString.equals("OK")) { System.err.println("AUTH Failed: " + authString); return; } //产品列表 String key0="千寻产品:FindS"; String key1="千寻产品:FindCm"; String key2="千寻产品:FindM"; String key3="千寻产品:FindMM"; String key4="千寻产品:云踪"; String key5="千寻产品:FindNow"; final String[] aliyunProducts=new String[]{key0,key1,key2,key3,key4,key5}; //初始化,清除可能的已有旧数据 for (int i = 0; i < aliyunProducts.length; i++) { jedis.del(aliyunProducts[i]); } //模拟用户购物 for (int i = 0; i < 5; i++) {//模拟多人次的用户购买行为 customersShopping(aliyunProducts,i,jedis); } System.out.println(); //利用ApsaraDB for Redis来输出各个商品间的关联关系 for (int i = 0; i < aliyunProducts.length; i++) { System.out.println(">>>>>>>>>>与"+aliyunProducts[i]+"一起被购买的产品有<<<<<<<<<<<<<<<"); Set<Tuple> relatedList = jedis.zrevrangeWithScores(aliyunProducts[i], 0, -1); for (Tuple item : relatedList) { System.out.println("商品名称:"+item.getElement()+", 共同购买次数:"+Double.valueOf(item.getScore()).intValue()); } System.out.println(); } } catch (Exception e) { e.printStackTrace(); }finally{ jedis.quit(); jedis.close(); } } private static void customersShopping(String[] products, int i, Jedis jedis) { //简单模拟3种购买行为,随机选取作为用户的购买选择 int bought=(int)(Math.random()*3); if(bought==1){ //模拟业务逻辑:用户购买了如下产品 System.out.println("用户"+i+"购买了"+products[0]+","+products[2]+","+products[1]); //将产品之间的关联情况记录到ApsaraDB for Redis的SortSet之中 jedis.zincrby(products[0], 1, products[1]); jedis.zincrby(products[0], 1, products[2]); jedis.zincrby(products[1], 1, products[0]); jedis.zincrby(products[1], 1, products[2]); jedis.zincrby(products[2], 1, products[0]); jedis.zincrby(products[2], 1, products[1]); }else if(bought==2){ //模拟业务逻辑:用户购买了如下产品 System.out.println("用户"+i+"购买了"+products[4]+","+products[2]+","+products[3]); //将产品之间的关联情况记录到ApsaraDB for Redis的SortSet之中 jedis.zincrby(products[4], 1, products[2]); jedis.zincrby(products[4], 1, products[3]); jedis.zincrby(products[3], 1, products[4]); jedis.zincrby(products[3], 1, products[2]); jedis.zincrby(products[2], 1, products[4]); jedis.zincrby(products[2], 1, products[3]); }else if(bought==0){ //模拟业务逻辑:用户购买了如下产品 System.out.println("用户"+i+"购买了"+products[1]+","+products[5]); //将产品之间的关联情况记录到ApsaraDB for Redis的SortSet之中 jedis.zincrby(products[5], 1, products[1]); jedis.zincrby(products[1], 1, products[5]); } } }
运行结果
用户0购买了千寻产品:云踪,千寻产品:FindM,千寻产品:FindMM 用户1购买了千寻产品:FindS,千寻产品:FindM,千寻产品:FindCm 用户2购买了千寻产品:FindCm,千寻产品:FindNow 用户3购买了千寻产品:FindS,千寻产品:FindM,千寻产品:FindCm 用户4购买了千寻产品:FindCm,千寻产品:FindNow >>>>>>>>>>与千寻产品:FindS一起被购买的产品有<<<<<<<<<<<<<<< 商品名称:千寻产品:FindM, 共同购买次数:2 商品名称:千寻产品:FindCm, 共同购买次数:2 >>>>>>>>>>与千寻产品:FindCm一起被购买的产品有<<<<<<<<<<<<<<< 商品名称:千寻产品:FindS, 共同购买次数:2 商品名称:千寻产品:FindNow, 共同购买次数:2 商品名称:千寻产品:FindM, 共同购买次数:2 >>>>>>>>>>与千寻产品:FindM一起被购买的产品有<<<<<<<<<<<<<<< 商品名称:千寻产品:FindS, 共同购买次数:2 商品名称:千寻产品:FindCm, 共同购买次数:2 商品名称:千寻产品:云踪, 共同购买次数:1 商品名称:千寻产品:FindMM, 共同购买次数:1 >>>>>>>>>>与千寻产品:FindMM一起被购买的产品有<<<<<<<<<<<<<<< 商品名称:千寻产品:云踪, 共同购买次数:1 商品名称:千寻产品:FindM, 共同购买次数:1 >>>>>>>>>>与千寻产品:云踪一起被购买的产品有<<<<<<<<<<<<<<< 商品名称:千寻产品:FindMM, 共同购买次数:1 商品名称:千寻产品:FindM, 共同购买次数:1 >>>>>>>>>>与千寻产品:FindNow一起被购买的产品有<<<<<<<<<<<<<<< 商品名称:千寻产品:FindCm, 共同购买次数:2
此文章本站原创,地址 https://www.vxzsk.com/1267.html
转载请注明出处!谢谢!
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程
上一篇:redis 排行榜
下一篇:redis 发布订阅实例
^