微博案例-互相关注

2020-06-23  本文已影响0人  神仙苏醒

个人认为这个案例还是很经典的

  /**
     * 关注别人
     * @param userId 自己
     * @param followUserId 你要关注的人
     */
    public void follow(long userId, long followUserId){

        //我关注了谁 需要在我关注的人的 集合中增加一条记录
        jedis.sadd("user::" + followUserId +"::followers",String.valueOf(userId));
        //我关注人的集合
        jedis.sadd("user::" +userId + "::follow_users",String.valueOf(followUserId));
    }

取消关注

/**
    * 取消关注
    * @param userId
    * @param followUserId
    */
   public void unfollow(long userId, long followUserId){
       jedis.srem("user::" + followUserId +"::followers",String.valueOf(userId));
       jedis.srem("user::" +userId + "::follow_users",String.valueOf(followUserId));
   }

查看哪些人关注了我

/**
     * 查看有哪些人关注了我
     * @param userId
     * @return
     */
    public Set<String> getFollowers(long userId){
        return jedis.smembers("user::" + userId +"::followers");
    }

    /**
     * 查看我关注了哪些人
     * @param userId
     * @return
     */
    public Set<String> getFollowUsers(long userId){
        return jedis.smembers("user::" +userId + "::follow_users");
    }
    /**
     * 查看自己关注的人数
     * @param userId
     * @return
     */
    public long getFollowUsersCount(long userId) {
        return jedis.scard("user::" + userId + "::follow_users");
    }
    /**
     * 查看自己关注的人数
     * @param userId
     * @return
     */
    public long getFollowersCount(long userId){
        return jedis.scard("user::" +userId + "::follow_users");
    }

    /**
     * 获取用户跟其他用户之间共同关注的人有哪些
     * @param userId
     * @param otherUserId
     * @return
     */
    public Set<String> getSameFollowUsers(long userId, long otherUserId){
       return jedis.sinter("user::" +userId + "::follow_users",
               "user::" +otherUserId + "::follow_users");
    }

   /**
     * 获取给我推荐的可关注人
     * 我关注的某个好友关注的一些人,我没关注那些人,此时推荐那些人给我
     * @param userId
     * @param otherUserId
     * @return
     */
    public Set<String> getRecommendFollowUsers(long userId, long otherUserId){
        return jedis.sdiff("user::" +userId + "::follow_users",
                "user::" +otherUserId + "::follow_users");
    }

很不错的案例

上一篇 下一篇

猜你喜欢

热点阅读