在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/人工智能  Java  PHP  Python  HTML/ 關(guān)于幾百萬(wàn)用戶量下redis排行榜設(shè)計(jì)

關(guān)于幾百萬(wàn)用戶量下redis排行榜設(shè)計(jì)

1.想做一個(gè)用戶金幣排行榜,顯示的話就只顯示最高的100條記錄
2.談到用redis做排行榜多數(shù)會(huì)想到用sorted set來(lái)做。但是假如有幾百萬(wàn)用戶,并且日活幾十萬(wàn)的情況下,把所有數(shù)據(jù)都放在redis上的話就有點(diǎn)多了。
3.合理做法是不是應(yīng)該先用數(shù)據(jù)庫(kù)把用戶的信息存起來(lái),更新操作都在數(shù)據(jù)庫(kù)上,然后定時(shí)從數(shù)據(jù)庫(kù)里譬如取100條數(shù)據(jù)出來(lái)放在sorted zet讓用戶讀取比較合理?這樣內(nèi)存消耗和redis服務(wù)器寫(xiě)操作就比較低
4.另外一方面,如何考量數(shù)據(jù)量是否太大或者IO操作太頻繁,而不適合放到redis上呢?

回答
編輯回答
若相惜

因?yàn)槟阒恍枰@示前100名,所以用一個(gè)最小堆就可以了。

Redi可以用sorted set加一個(gè)key保存第100名的積分,數(shù)據(jù)庫(kù)更新用戶積分后,先判斷是否比當(dāng)前第100名高,如果是就更新key和插入/更新到sorted set,然后定期把100名以后的移除掉,這樣就不會(huì)占太多內(nèi)存。

2018年2月3日 05:22