php粉丝关注功能,Redis实现用户关注功能
最近項(xiàng)目要涉及到粉絲關(guān)注問題,權(quán)衡再三還是使用Redis實(shí)現(xiàn)比較方便,使用Redis的有序集合可以做到根據(jù)關(guān)注的時(shí)間有序的取出列表,假設(shè)我的ID是me,別人的ID是other.
添加關(guān)注
添加關(guān)注分為兩步:
將對(duì)方id添加到自己的關(guān)注列表中;
shell Redis::ZADD("me:follow", time(), other)
將自己的id添加到對(duì)方的粉絲列表中:
shell Redis::ZADD("other:fans", time(), me)
取消關(guān)注
取消關(guān)注同樣分為兩步:
將對(duì)方id從自己的關(guān)注列表中移除;
shell Redis::ZREM("me:follow", other)
將自己的id從對(duì)方的粉絲列表中移除:
shell Redis::ZREM("other:fans", me)
關(guān)注列表
查看我的關(guān)注列表:
shell Redis::ZRANGE("me:follow", 0 , -1)
查看別人的把id換掉就可以
shell Redis::ZRANGE("other:follow", 0 , -1)
粉絲列表
查看我的粉絲列表:
shell Redis::ZRANGE("me:fans", 0 , -1)
查看別人的把id換掉就可以
shell Redis::ZRANGE("other:fans", 0 , -1)
人物關(guān)系
我單向關(guān)注他
我單向關(guān)注他,要同時(shí)滿足兩個(gè)條件:1、我的關(guān)注列表中有他(或他的粉絲列表中有我);2、我的粉絲列表中沒有他(或他的關(guān)注列表中沒有我)。
shell Redis::ZSCORE("me:fans", other) #未返回分?jǐn)?shù)
shell Redis::ZSCORE("me:follow", other) #返回分?jǐn)?shù)
他單向關(guān)注我
他單向關(guān)注我,要同時(shí)滿足兩個(gè)條件:1、我的關(guān)注列表中沒有他(或他的粉絲列表中沒有我);2、我的粉絲列表中有他(或他的關(guān)注列表中有我)。
shell Redis::ZSCORE("other:fans", me) #未返回分?jǐn)?shù)
shell Redis::ZSCORE("other:follow", me) #返回分?jǐn)?shù)
是否互粉
我和某人是否互粉,要同時(shí)滿足兩個(gè)條件:1、我的關(guān)注列表中有他(或他的粉絲列表中有我);2、我的粉絲列表中有他(或他的關(guān)注列表中有我)。同時(shí)成立才為互粉。
shell Redis::ZSCORE("me:fans", other) #返回分?jǐn)?shù)
shell Redis::ZSCORE("me:follow", other) #返回分?jǐn)?shù)
數(shù)量相關(guān)
我的關(guān)注數(shù)
shell Redis::ZCARD("me:follow"); #返回?cái)?shù)量
我的粉絲數(shù)
shell Redis::ZCARD("me:fans"); #返回?cái)?shù)量
排序取出所有的人
根據(jù)關(guān)注的時(shí)間倒敘取出用戶的id
shell Redis::ZREVRANGE("me:fans", 0, -1, TRUE); #倒序取值
根據(jù)關(guān)注時(shí)間順序取出用戶的id
shell Redis::ZRANGE("me:fans", 0, -1, TRUE); #順序取值
總結(jié)
以上是生活随笔為你收集整理的php粉丝关注功能,Redis实现用户关注功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php模型分页代码,ThinkPHP6.
- 下一篇: php-fpm自启动,php-fpm自启