+
95
-

回答

可以是用redis的有序集合来实现。

在好友关注关系中,主要有以上三种状态,即:

我的粉丝(fans)

我的关注(follow)

互粉(mutual)

假设两个用户。用户ID分别为1和2,。

一、关注与粉丝

1、关注好友:

关注好友分为两个步骤。

第一步,将对方写入我的关注中。

第二步,将我写入对方的粉丝中。即:

ZADD 1:follow time(时间戳) 2
ZADD 2:fans time(时间戳) 1
2、取消关注:

取消关注也分为两个步骤

第一步,将对方从我的关注中移除。

第二步,将我从对方的粉丝中移除。即:

ZREM 1:follow 2
ZREM 2:fans 1

3、查看粉丝列表

ZRANGE 1:fans 0 -1

4、查看关注列表

ZRANGE 1:follow 0 -1

5、粉丝数量

ZCARD 1:fans

6、关注数量

ZCARD 1:follow

二、人与人之间的关系

1、我单向关注Ta。即我关注的Ta,但是Ta并没有关注我的

ZSCORE 1:follow 2 #true
ZSCORE 1:fans 2 #false


如果第一条成立,第二条不成立,说明我单向关注了对方(1关注了2,而1的粉丝中没有2,说明2并没有关注1)。

2、Ta单向关注我。即Ta关注我了,我并没有关注Ta

ZSCORE 1:follow 2 #false
ZSCORE 1:fans 2 #true


如果第一条不成立,第二条成立,说明对方单向关注了我(1没有关注2,而1的粉丝中有2,说明2关注了1);

3、互相关注。即我关注了Ta,Ta也关注了我

ZSCORE 1:follow 2 #true
ZSCORE 1:fans 2 #true


如果上面两条都成立,即说明互相关注了(1关注了2,并且1的粉丝中有2,说明2也关注1了)。

网友回复

我知道答案,我要回答