今天看了一个老视频:http://v.youku.com/v_show/id_XMzM3NjgzMjY4.html 里面说到这个问题“A关注了B,B也关注A,要得到两个人的共同好友,好友取交集。如果A是一个粉丝有3000万的大V,而B是粉丝只有1000的屌丝,要找出他们的共同好友,应该怎么做?” 视频看完了,我却米有找到答案。大家帮忙分析下。
首先得是redis,第二,得合理,不能用户查看的时候等待个四五秒。
小伙看你根骨奇佳,潜力无限,来学PHP伐。
这个计算过程不是一次http操作就行的,而且也不是能够立即计算出来,除非灰常NB的算法工程师和数据工程师。 这些东西都是在后台慢慢计算,不然那些数据挖掘工程师靠什么吃饭,当有计算出结果的时候就开始向你推送,这个时候就能够体现服务器端用静态语言并且常驻内存的好处了。
看了一下视频,人家说的很清楚了:预先计算。(从10分30秒开始看) 就是关注(插入数据)的时候,就计算一下。
利用redis的sets很容易。 例: user:1:fans [2,3,4] //关注用户1的粉丝 user:1:follows [2,5,7,8] //用户1关注的
user:2:fans [1,3,4] //关注用户2的粉丝 user:2:follows [1,7,8] //用户2关注的
用户1登陆的时候,取一下user:1:fans与user:1:follow的交集,能得到好友关系,那取一下user:1:follows与user:2:follows的交集,是不是就能得到共同关注的用户?剩余的交集差集相信不用我说,你应该也会了吧
这个计算过程不是一次http操作就行的,而且也不是能够立即计算出来,除非灰常NB的算法工程师和数据工程师。
这些东西都是在后台慢慢计算,不然那些数据挖掘工程师靠什么吃饭,当有计算出结果的时候就开始向你推送,这个时候就能够体现服务器端用静态语言并且常驻内存的好处了。
看了一下视频,人家说的很清楚了:预先计算。(从10分30秒开始看)
就是关注(插入数据)的时候,就计算一下。
利用redis的sets很容易。
例:
user:1:fans [2,3,4] //关注用户1的粉丝
user:1:follows [2,5,7,8] //用户1关注的
user:2:fans [1,3,4] //关注用户2的粉丝
user:2:follows [1,7,8] //用户2关注的
用户1登陆的时候,取一下user:1:fans与user:1:follow的交集,能得到好友关系,那取一下user:1:follows与user:2:follows的交集,是不是就能得到共同关注的用户?剩余的交集差集相信不用我说,你应该也会了吧