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

DBC 1.6K 0

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

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


		BoundSetOperations operations = redisTemplate.boundSetOps("user:tags:1");

		operations.add("car","student","rich","dog","guangdong","rich");

		Set<String> set1 = operations.members();
		System.out.println(set1);


		operations.remove("dog");
		Set<String> set2 = operations.members();
		System.out.println(set2);



	}

输出结果——可以看到,他会自动的去重

分布缓存实战-Set集合数据结构最佳案例实战插图
继续来看下一个例子

/**
	 * 社交应用
	 */
	@Test
	public void testSocial(){


		BoundSetOperations operationsLW = redisTemplate.boundSetOps("user:lw");
		operationsLW.add("A","B","C","D","E");
		System.out.println("老王的粉丝:"+operationsLW.members());


		BoundSetOperations operationsXD = redisTemplate.boundSetOps("user:xd");
		operationsXD.add("A","B","F","G","H","K","J","W");
		System.out.println("小d的粉丝:"+operationsXD.members());

		//差集
		Set lwSet = operationsLW.diff("user:xd");
		System.out.println("老王的专属用户:"+lwSet);

		//差集
		Set xdSet = operationsXD.diff("user:lw");
		System.out.println("小D的专属用户:"+xdSet);


		//交集
		Set interSet = operationsLW.intersect("user:xd");
		System.out.println("同时关注了两个人的用户:"+interSet);

		//并集
		Set unionSet = operationsLW.union("user:xd");
		System.out.println("两个人的并集:"+unionSet);


		//判断A用户是不是老王的粉丝

		boolean flag = operationsLW.isMember("A");
		System.out.println("A用户是不是老王的粉丝:"+flag);
	}

发表评论 取消回复
表情 图片 链接 代码

分享