美文网首页
Redis实现用户关注功能

Redis实现用户关注功能

作者: PHP菜鸡 | 来源:发表于2018-04-23 13:52 被阅读110次

最近项目要涉及到粉丝关注问题,权衡再三还是使用Redis实现比较方便,使用Redis的有序集合可以做到根据关注的时间有序的取出列表,假设我的ID是me,别人的ID是other.

添加关注

添加关注分为两步:

  1. 将对方id添加到自己的关注列表中;
    shell Redis::ZADD("me:follow", time(), other)
  2. 将自己的id添加到对方的粉丝列表中:
    shell Redis::ZADD("other:fans", time(), me)

取消关注

取消关注同样分为两步:

  1. 将对方id从自己的关注列表中移除;
    shell Redis::ZREM("me:follow", other)
  2. 将自己的id从对方的粉丝列表中移除:
    shell Redis::ZREM("other:fans", me)

关注列表

  1. 查看我的关注列表:
    shell Redis::ZRANGE("me:follow", 0 , -1)
  2. 查看别人的把id换掉就可以
    shell Redis::ZRANGE("other:follow", 0 , -1)

粉丝列表

  1. 查看我的粉丝列表:
    shell Redis::ZRANGE("me:fans", 0 , -1)
  2. 查看别人的把id换掉就可以
    shell Redis::ZRANGE("other:fans", 0 , -1)

人物关系

  1. 我单向关注他

我单向关注他,要同时满足两个条件:1、我的关注列表中有他(或他的粉丝列表中有我);2、我的粉丝列表中没有他(或他的关注列表中没有我)。

shell Redis::ZSCORE("me:fans", other) #未返回分数
shell Redis::ZSCORE("me:follow", other) #返回分数

  1. 他单向关注我

他单向关注我,要同时满足两个条件:1、我的关注列表中没有他(或他的粉丝列表中没有我);2、我的粉丝列表中有他(或他的关注列表中有我)。

shell Redis::ZSCORE("other:fans", me) #未返回分数
shell Redis::ZSCORE("other:follow", me) #返回分数

  1. 是否互粉

我和某人是否互粉,要同时满足两个条件:1、我的关注列表中有他(或他的粉丝列表中有我);2、我的粉丝列表中有他(或他的关注列表中有我)。同时成立才为互粉。

shell Redis::ZSCORE("me:fans", other) #返回分数
shell Redis::ZSCORE("me:follow", other) #返回分数

数量相关

  1. 我的关注数
    shell Redis::ZCARD("me:follow"); #返回数量
  2. 我的粉丝数
    shell Redis::ZCARD("me:fans"); #返回数量

排序取出所有的人

  1. 根据关注的时间倒叙取出用户的id
    shell Redis::ZREVRANGE("me:fans", 0, -1, TRUE); #倒序取值
  2. 根据关注时间顺序取出用户的id
    shell Redis::ZRANGE("me:fans", 0, -1, TRUE); #顺序取值

相关文章

  • Redis实现用户关注功能

    最近项目要涉及到粉丝关注问题,权衡再三还是使用Redis实现比较方便,使用Redis的有序集合可以做到根据关注的时...

  • 用户体验

    实现功能 -> 关注体验 -用户体验指用户对产品建立的主观感受和认识-关心功能实现,更关心用户体验,才能做出好产品...

  • 使用Redis实现关注关系

    最近使用关系型数据库实现了用户之间的关注,于是思考换一种思路,使用Redis实现用户之间的关注关系。综合考虑了一下...

  • 秒杀设计

    防止库存超卖 用户少,并发少: 直接使用商品上下架的功能来实现秒杀。(直接读库) 用户量大,并发高: redis设...

  • “真实世界”全栈开发-3.11-关注功能

    这一讲我们来实现用户之间的关注功能。 修改用户模型 关注功能引入了新的信息,所以我们需要修改用户模型:添加一个数组...

  • Redis实现缓存

    场景一:类似于微博,实现关注和被关注功能。 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户...

  • Redis学习笔记

    一、Redis事务 Redis实现了基本的事务功能,但是不具有回滚功能。Redis通过使用 MULTI和EXEC两...

  • redis主从复制和sentinel

    redis 主从复制 一. 复制 Redis 的复制(replication)功能允许用户根据一个 Redis服务...

  • Redis从入门到精通(五、Redis的事务)

    Redis通过 MULTI,EXEC,DISCARD,WATCH.UNWATCH 来实现事务功能。 Redis 事...

  • 使用Java语言开发微信公众平台(四)——图文消息的发送与响应

    在上一篇文章中,我们实现了被关注回复与关键词回复功能。在用户关注的时候自动推送功能菜单,并根据用户输入的关键词,回...

网友评论

      本文标题:Redis实现用户关注功能

      本文链接:https://www.haomeiwen.com/subject/wytllftx.html