Appearance
在社交应用中,有时需要获取共同好友、全部好友以及专属于某个人的好友,用户推荐算法中肯定会用到这些数据。利用Redis中Set结构的API能够查询到两个Set结构交集、并集和差集的数据。
TIP
最为常见的用处除了用户推荐外,还有查询关注列表、粉丝列表,和本篇文章思路相近,故不单独列出。
实践:
java
@Autowired
private RedisTemplate redisTemplate;
public void test03() {
// 用户A
BoundSetOperations operationsA = redisTemplate.boundSetOps("user:a");
// 关注了用户A的用户
operationsA.add("A","B","C","D");
System.out.println("老A的粉丝"+operationsA.members());
BoundSetOperations operationsB = redisTemplate.boundSetOps("user:b");
operationsB.add("A","B","F","G","O","W");
System.out.println("老B的粉丝"+operationsB.members());
// 差集
Set setA = operationsA.diff("user:b");
System.out.println("A的专属用户"+setA);
// 交集
Set set = operationsA.intersect("user:b");
System.out.println("共同好友"+set);
// 并集
Set union = operationsA.union("user:b");
System.out.println("全部好友"+union);
Boolean c = operationsA.isMember("C");
System.out.println("用户c是不是老王的粉丝"+c);
}
结果输出
java
老A的粉丝[A, C, D, B]
老B的粉丝[W, A, F, G, O, B]
A的专属用户[D, C]
共同好友[A, B]
全部好友[W, A, C, G, F, D, O, B]
用户c是不是老王的粉丝true