mysql关注表,MySQL关注与粉丝系统如何设计

d62a58e06bbb8579f62d33ea7f594115.png

目前数据表设计成上图这个样子

假设表名是user_fans 用户A的用户id是1 用户B的用户id是2

用户A关注用户B 则插入数据时, 4个字段分别是 1 1 2 0

用户B关注用户A 则插入数据时, 4个字段分别是 2 2 1 0

此时他们是互粉状态 我将2条记录的status字段都由0改为1

用户A查看自己的粉丝列表 SQL则是 select fans_id, status from user_fans where user_id = 1

然后status字段可以用来判断用户A的粉丝和用户A的关系状态

但是这样存在一个问题就是 比如用户A查看用户B的粉丝列表

此时用户B的粉丝列表和用户A之间的关系就不好确定

只能先把用户A所有关注的用户id都查询出来, 然后遍历用户B的粉丝列表(假设查20个人出来, 遍历20长度的数组)

在foreach循环中判断20次用户B的粉丝的id是否在用户A的关注的数组中

数据量小的话应该不会有性能问题

但是比如用户A的关注了3000个人 那么查询出用户A关注的用户数组中就有3000个ID,

这样用户A每次查看他人的粉丝列表都会很慢, 引起性能问题, 请问有没有好的办法解决这样的问题?

看网上有的文章说粉丝与关注这样的系统应该使用redis, 如果用redis, 具体怎么使用, 用什么数据类型?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值