50 万用户的应用,怎么设计关注粉丝数据表?
请问大佬们,公司的项目有50万用户,活跃的也挺多的,少说有20万。
现在想做一个用户之间关注的功能,mysql表怎么设计才会好?
如果放在一个表里,随随便便数据就好几千万,查询起来很耗时。
第一次接触这么多数据的表,找大家请教一下,谢谢。
关于 LearnKu
考虑用redis缓存吧
@php炎黄 缓存不行啊,要链表查询的
1.有钱用redis咯
2.用user_id 来分表,比如可以设定10张表, 1-5万的id的用户存表1,5到10万就存表2,这样逻辑简单,扩展表也方便,毕竟每个项目都想着用户不断增加嘛。想用hash也可以。这样做有一个问题是,如果我想查哪些人关注了我就不太好查,最好再建立一个粉丝表(user_id ,关注我的人的id序列)
@yujiarong 方案1是用redis集合做吗?老板肯定不会出钱加内存的,不过很想知道方案1怎么做哈哈。
方案2看的似懂非懂,意思是不是如果第6万用户关注了第1个用户,第11万个用户也关注了第1个用户,这样
关联关系会散落到好几张表里?
你可以请教下 新浪的大佬,或则网易云的 设计,网易应该用户日活跃是你的几十倍吧
@qinplain 可是我不认识他们啊
感觉还是用redis的集合做好些,这样处理某些关系方便些。比如要获取2个用户的共同粉丝,直接取这2个人集合的交集就完了。
@kilogi 很费内存空间吧?
@wanghan
What's the Redis memory footprint?
To give you a few examples (all obtained using 64-bit instances):
按官方的说法,大概一条100字节,50W条的话,大概占47M。但是实际情况的话,会更多些。
@kilogi 太感谢了~