歡迎來到 常識(shí)詞典網(wǎng) , 一個(gè)專業(yè)的常識(shí)知識(shí)學(xué)習(xí)網(wǎng)站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
新浪關(guān)注上限2000人,一般人的關(guān)注在3、4百人左右,其中互相關(guān)注的好友關(guān)系估計(jì)也就二三百人,做個(gè)緩存在Memcac-ed里,每次取兩個(gè)id列表做個(gè)交集,感覺也可以。另外,我覺得另一種方法可以是將每個(gè)人的好友存在Redis的一個(gè)sets里,然后用sets的SINTER功能取個(gè)交集可能會(huì)更高效一點(diǎn)。答案 2:
效率還可以吧~但是曾經(jīng)關(guān)注的人取消關(guān)注之后算在共同好友里就不應(yīng)該了,有可能是數(shù)據(jù)還沒及時(shí)更新答案 3:
vdisk.weibo/s/sDtG...這個(gè)ppt里有對(duì)好友,你可能要關(guān)注的人,朋友,粉絲等做了分析答案 4:
新浪微波有redis的集群,blog.nosqlfan/-tml...,可以看看這里,在redis里面求交集是很高效的答案 5:
注意,這是共同好友,不是共同粉絲。所以這個(gè)問題基本跟No-L神馬的沒有關(guān)系了,微博肯定會(huì)用上MC緩存,實(shí)際上的操作都是內(nèi)存操作。新浪微博關(guān)于好友關(guān)系的各種計(jì)算都基于一個(gè)限制:關(guān)注的人上限2000那么就好辦了,好友id以key/value形式存儲(chǔ)(id做key),判斷某個(gè)id是否在另一個(gè)集里存在只需要一次判斷,id做key的好處是isset可以直接返回結(jié)果不需要比較兩個(gè)id是否相等,最多需要做一次遍歷2000次判斷就能找出共同好友,這個(gè)操作在內(nèi)存里基本上是毫秒級(jí)別的消耗。實(shí)際上就算直接使用My-L,查詢出兩個(gè)人的id列表再用以上的方式求共同好友,效率也不是問題。關(guān)于曾經(jīng)的好友計(jì)算出錯(cuò)的問題,這個(gè)在大規(guī)模使用緩存技術(shù)的網(wǎng)站里是很正常的,數(shù)據(jù)在緩存里,而新浪的緩存是個(gè)集群,更新肯定會(huì)存在延遲。如果共同好友數(shù)據(jù)是實(shí)時(shí)計(jì)算的那么這個(gè)延遲應(yīng)該不會(huì)超過兩個(gè)小時(shí);如果是一段時(shí)間里計(jì)算好了直接緩存,定時(shí)更新(我覺得這種設(shè)計(jì)的可能性更大),那么你得等到下次-新數(shù)據(jù)的時(shí)候才會(huì)更新。答案 6:
Mark一下,同關(guān)注。不過個(gè)人感覺,兩次單查詢的結(jié)果取交集的效率還可以。下一篇:你會(huì)把中國(guó)人比成什么樣的果物?(見說明) 下一篇 【方向鍵 ( → )下一篇】
上一篇: Android 上的截屏軟件都要 root 權(quán)限呢? 上一篇 【方向鍵 ( ← )上一篇】
快搜