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. css - 如何把一個(gè)視圖放在左浮動(dòng)定位的視圖的上面?2. python的正則怎么同時(shí)匹配兩個(gè)不同結(jié)果?3. php多任務(wù)倒計(jì)時(shí)求助4. javascript - axios請求回來的數(shù)據(jù)組件無法進(jìn)行綁定渲染5. javascript - vue中怎么使用原生js插件6. MySQL的聯(lián)合查詢[union]有什么實(shí)際的用處7. javascript - jquery怎么讓a標(biāo)簽跳轉(zhuǎn)后保持tab的樣式8. css - 子元素跑到父元素外面9. javascript - 小demo:請教怎么做出類似于水滴不斷擴(kuò)張的效果?10. javascript - 請問下面代碼中的...是擴(kuò)展運(yùn)算符還是操作運(yùn)算符?這樣寫是什么意思?
