推荐商品

此案例是一个推荐商品的小demo,用redis的sortset 结构,

  • key 为当前购买的商品
  • score 为和当前购买的其他商品数量 incrby 增加1, (这个商品和此商品一起合买的次数越多,分数越高,越会被推荐)
  • value 为otherProduct
    代码清单:
  /**
     * 继续购买商品(多个商品需要循环处理,相互加分)
     * @param productId 当前购买的商品
     * @param otherProdeuctId 当前和productId 一起购买的其他商品
     */
    public void continuePurchase(long productId, long otherProdeuctId){
        jedis.zincrby("continue_purchase_products::" + productId,1 ,
                String.valueOf(otherProdeuctId));
    }
  • 当需要推荐其他人购买过的其他商品的时候按照分数取出即可
 /**
     * 推荐其他人购买过的其他商品
     * @param productId
     * @return
     */
    public Set getRecommendProducts(long productId){
        return jedis.zrevrangeWithScores("continue_purchase_products::" + productId,0,2);
    }

非常巧妙的一个小方式 解决了小型系统的推荐问题

你可能感兴趣的:(推荐商品)