【开发经验】redis实现共同好友功能
背景
共同好友实现思路
每个人的好友存放在set集合中。key的名字为friend_{userId}。如下图:
-
用户1的好友为2,3,4 用户2的好友为1,3,4 用户3的好友为1,4,5
交集
用户1和2是好友。他们的共同好友可以通过他们的交集获取。
redis命令示例:
127.0.0.1:6379> sadd friend_1 2 3 4 (integer) 3 127.0.0.1:6379> sadd friend_2 1 4 5 (integer) 3 127.0.0.1:6379> SINTER friend_1 friend_2 1) “4”
-
sadd 将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。 SINTER 返回给定所有给定集合的交集。
并集
获得所有的好友信息。
127.0.0.1:6379> SUNION friend_1 friend_2 1) “1” 2) “2” 3) “3” 4) “4” 5) “5”
-
SUNION 返回给定集合的并集。
差集
可以用户好友推荐。差集出来的用户推荐给用户2。
127.0.0.1:6379> sadd friend_1 2 3 4 (integer) 3 127.0.0.1:6379> sadd friend_2 1 4 5 (integer) 3 127.0.0.1:6379> SDIFF friend_1 friend_2 1) “2” 2) “3”
-
SDIFF 返回第一个集合与其他集合之间的差异。
