redis - 新浪微博里的共同好友的查找是如何實(shí)現(xiàn)的
問題描述
今天看了一個(gè)老視頻:http://v.youku.com/v_show/id_XMzM3NjgzMjY4.html里面說到這個(gè)問題“A關(guān)注了B,B也關(guān)注A,要得到兩個(gè)人的共同好友,好友取交集。如果A是一個(gè)粉絲有3000萬的大V,而B是粉絲只有1000的屌絲,要找出他們的共同好友,應(yīng)該怎么做?”視頻看完了,我卻米有找到答案。大家?guī)兔Ψ治鱿隆?/p>
首先得是redis,第二,得合理,不能用戶查看的時(shí)候等待個(gè)四五秒。
問題解答
回答1:這個(gè)計(jì)算過程不是一次http操作就行的,而且也不是能夠立即計(jì)算出來,除非灰常NB的算法工程師和數(shù)據(jù)工程師。這些東西都是在后臺慢慢計(jì)算,不然那些數(shù)據(jù)挖掘工程師靠什么吃飯,當(dāng)有計(jì)算出結(jié)果的時(shí)候就開始向你推送,這個(gè)時(shí)候就能夠體現(xiàn)服務(wù)器端用靜態(tài)語言并且常駐內(nèi)存的好處了。
回答2:看了一下視頻,人家說的很清楚了:預(yù)先計(jì)算。(從10分30秒開始看)就是關(guān)注(插入數(shù)據(jù))的時(shí)候,就計(jì)算一下。
回答3:利用redis的sets很容易。例:user:1:fans [2,3,4] //關(guān)注用戶1的粉絲user:1:follows [2,5,7,8] //用戶1關(guān)注的
user:2:fans [1,3,4] //關(guān)注用戶2的粉絲user:2:follows [1,7,8] //用戶2關(guān)注的
用戶1登陸的時(shí)候,取一下user:1:fans與user:1:follow的交集,能得到好友關(guān)系,那取一下user:1:follows與user:2:follows的交集,是不是就能得到共同關(guān)注的用戶?剩余的交集差集相信不用我說,你應(yīng)該也會了吧
相關(guān)文章:
1. 怎么在phpstudy中用phpexcel上傳數(shù)據(jù)到MYSQL?2. javascript - 百度搜索網(wǎng)站,如何讓搜索結(jié)果顯示一張圖片加上一段描述,如圖;求教3. html5和Flash對抗是什么情況?4. phpadmin的數(shù)據(jù)庫,可以設(shè)置自動變化時(shí)間的變量嗎?就是不需要接收時(shí)間數(shù)據(jù),自動變化5. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時(shí)間會消失是什么情況?6. javascript - win7 npm安裝gulp失敗,已是管理員打開,也設(shè)置了文件權(quán)限7. nginx - 使用wordpress搭建博客,怎么實(shí)現(xiàn)真實(shí)服務(wù)器使用HTTP,然后使用UPYUN的HTTPS加密?8. html - 爬蟲時(shí)出現(xiàn)“DNS lookup failed”,打開網(wǎng)頁卻沒問題,這是什么情況?9. boot2docker無法啟動10. mac里的docker如何命令行開啟呢?
