articleList

09-分布缓存实战-Set 集合数据结构最佳案例实战

2025/03/16 posted in  Redis
Tags: 

第 1 集 案例实战之大数据下的用户画像标签去重

简介:案例实战需求之大数据下的用户画像标签去重

  • 介绍

    • 用户画像 英文为 User Profile,是根据用户基本属性、社会属性、行为属性、心理属性等真实信息而抽象出的一个标签化的、虚拟的用户模型。“用户画像”的实质是对 “人”的数字化。
    • 应用场景有很多,比如个性化推荐、精准营销、金融风控、精细化运营等等, 举个例子来理解用户画像的实际应用价值,我们经常用手机网购,淘宝里面的千人千面
    • 通过“标签 tag”来对用户的多维度特征进行提炼和标识,那每个人的用户画像就需要存储,set 集合就适合去重
    • 用户画像不止针对某个人,也可以某一人群或行业的画像
    • 利用 redis 可以很好的去重
  • 案例

    BoundSetOperations operations  = redisTemplate.boundSetOps("user:tags:1");
    ​
    operations.add("car","student","rich","guangdong","dog","rich");
    ​
    Set<String> set1 = operations.members();
    ​
    System.out.println(set1);
    ​
    operations.remove("dog");
    ​
    Set<String> set2 = operations.members();
    System.out.println(set2);
    ​
    return JsonData.buildSuccess();
    

第 2 集 案例实战社交应用里面之关注、粉丝、共同好友案例

简介:案例实战社交应用里面之关注、粉丝、共同好友案例

  • 背景

    • 社交应用里面的知识,关注、粉丝、共同好友案例
  • 案例实战

  • 代码

    public void testSet(){
    ​
        BoundSetOperations operationLW  = redisTemplate.boundSetOps("user:lw");
    ​
        operationLW.add("A","B","C","D","E");
        System.out.println("老王的粉丝:"+operationLW.members());
        BoundSetOperations operationXD  = redisTemplate.boundSetOps("user:xd");
    ​
        operationXD.add("A","B","F","G","H","J");
        System.out.println("小D的粉丝:"+operationXD.members());
    ​
        //差集
        Set lwSet = operationLW.diff("user:xd");
        System.out.println("老王的优势:"+lwSet);
    ​
        //差集
        Set xdSet = operationXD.diff("user:lw");
        System.out.println("小滴的优势:"+xdSet);
    ​
        //交集
        Set interSet =  operationLW.intersect("user:xd");
        System.out.println("共同好友:"+interSet);
    ​
        //并集
        Set unionSet = operationLW.union("user:xd");
        System.out.println("两个人的并集:"+unionSet);
    
      //用户A是否是 老王 的粉丝
        boolean flag = operationLW.isMember("A");
        System.out.println(flag);
    }
    

第 3 集 案例实战之 SortedSet 开发用户积分实时榜单最佳实践

简介:案例实战之 SortedSet 用户积分实时榜单最佳实践

  • 背景

    • 用户玩游戏-积分实时榜单
    • IT 视频热销实时榜单
    • 电商商品热销实时榜单
    • 一般的排行榜读多写少,可以对 master 进行写入操作,然后多个 slave 进行读取操作。
    • 如果是对象记得重写 HashCode 与 Equals 方法
  • 对象准备

    public class UserPointVO {
    ​
        public UserPointVO(String username, String phone) {
            this.username = username;
            this.phone = phone;
        }
    ​
        private String username;
    ​
        private String phone;
    ​
    }
    
    @Test
    void testData() {
    ​
          UserPoint p1 = new UserPoint("老王","13113");
          UserPoint p2 = new UserPoint("老A","324");
          UserPoint p3 = new UserPoint("老B","242");
          UserPoint p4 = new UserPoint("老C","542345");
          UserPoint p5 = new UserPoint("老D","235");
          UserPoint p6 = new UserPoint("老E","1245");
          UserPoint p7 = new UserPoint("老F","2356432");
          UserPoint p8 = new UserPoint("老G","532332");
    ​
          BoundZSetOperations<String, UserPoint> operations = redisTemplate.boundZSetOps("point:rank:real");
    ​
          operations.add(p1,888);
          ...
    }
    
  • 接口开发

    • 返回榜单-从大到小排序
    • 查看这个人的排名,从大到小,0 就是第一
    • 给某个用户加积分
    • 查看某个用户的积分

第 4 集 案例实战之 SortedSet 开发用户积分实时榜单多接口实战

简介:案例实战之 SortedSet 用户积分实时榜单多接口实战

  • 多接口实战

    • 接口开发

      • 返回榜单-从大到小排序
      • 查看这个人的排名,从大到小,0 就是第一
      • 给某个用户加积分
      • 查看某个用户的积分