Redis實現用戶關注功能


最近項目要涉及到粉絲關注問題,權衡再三還是使用Redis實現比較方便,使用Redis的有序集合可以做到根據關注的時間有序的取出列表,假設IDme別人IDother

 

1. 添加關注

添加關注分為兩步:

1、將對方id添加到自己的關注列表中;

Redis::ZADD("me:follow", time(), other)

2、將自己的id添加到對方的粉絲列表中:

Redis::ZADD("other:fans", time(), me)

2. 取消關注

取消關注同樣分為兩步:

1、將對方id從自己的關注列表中移除;

Redis::ZREM("me:follow", other)

2、將自己的id從對方的粉絲列表中移除:

Redis::ZREM("other:fans", me)

3. 關注列表

1查看我的關注列表:

Redis::ZRANGE("me:follow", 0 , -1)

2查看別人的把id換掉就可以

Redis::ZRANGE("other:follow", 0 , -1)

4. 粉絲列表

1查看我的粉絲列表:

Redis::ZRANGE("me:fans", 0 , -1)

2查看別人的把id換掉就可以

Redis::ZRANGE("other:fans", 0 , -1)

5. 人物關系

1 我單向關注他

我單向關注他,要同時滿足兩個條件:1、我的關注列表中(或他的粉絲列表中)2、我的粉絲列表中沒有(或他的關注列表中沒有)

Redis::ZSCORE("me:fans", other)   #未返回分數

Redis::ZSCORE("me:follow", other) #返回分數

2 他單向關注我

他單向關注我,要同時滿足兩個條件:1、我的關注列表中沒有(或他的粉絲列表中沒有)2、我的粉絲列表中(或他的關注列表中)

Redis::ZSCORE("other:fans", me)   #未返回分數

Redis::ZSCORE("other:follow", me) #返回分數

3 是否互粉

我和某人是否互粉,要同時滿足兩個條件:1、我的關注列表中有他(或他的粉絲列表中有我)2、我的粉絲列表中有他(或他的關注列表中有我)。同時成立才為互粉。

Redis::ZSCORE("me:fans", other)   #返回分數

Redis::ZSCORE("me:follow", other) #返回分數

6. 數量相關

1 我的關注數

Redis::ZCARD("me:follow");    #返回數量

 

 

2 我的粉絲數

Redis::ZCARD("me:fans");     #返回數量

 

7. 排序取出所有的人

1、根據關注的時間倒敘取出用戶的id

Redis::ZREVRANGE("me:fans", 0, -1, TRUE); #倒序取值

2、根據關注時間順序取出用戶的id

Redis::ZRANGE("me:fans", 0, -1, TRUE); #順序取值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM