嚴(yán)格排行榜Redis實(shí)現(xiàn)

1 常見排行榜

排行榜主要分為兩種励背,一種是并列排行榜(存在相同排名的情況)春霍,一種是嚴(yán)格排行榜(分先后順序,不存在并列名次)叶眉。

一般根據(jù)不同的業(yè)務(wù)場(chǎng)景址儒,選用不同的排行榜。例如竟闪,對(duì)于存在實(shí)物獎(jiǎng)勵(lì)且前一名與后一名的獎(jiǎng)品差距很大時(shí)离福,往往采用嚴(yán)格排行榜杖狼,而對(duì)于只是激勵(lì)用戶的場(chǎng)景炼蛤,則選用并列排行榜。

2 Redis嚴(yán)格排行榜實(shí)現(xiàn)

(1)數(shù)據(jù)結(jié)構(gòu):利用Redis的有序數(shù)列集合(zset)實(shí)現(xiàn)蝶涩。
(2)實(shí)現(xiàn)原理:
有序集合由三部分組成理朋,KEY(鍵)、score(成員的得分)绿聘、member(成員)嗽上。有序集合的每一項(xiàng),都是以鍵值對(duì)的形式存儲(chǔ)熄攘,每一項(xiàng)都有一個(gè)分?jǐn)?shù)兽愤。有序集合會(huì)根據(jù)score自動(dòng)排序。利用這個(gè)特性挪圾,我們就可以實(shí)現(xiàn)排行榜了浅萧。

score 是數(shù)字類型,可以是整形也可以是浮點(diǎn)型哲思。按照排行榜多級(jí)排序的要求洼畅,相同分值下按照先來后到的順序排序(創(chuàng)建時(shí)間越早,排序越高)棚赔,但是Redis相同分值帝簇,是按照 member 的 ASCII碼進(jìn)行排序徘郭。

所以,需要將 score進(jìn)行改造丧肴,同時(shí)記錄得分與時(shí)間信息残揉。實(shí)現(xiàn)方式有兩種:
方式一,score 為整數(shù)芋浮,采用“得分 + 時(shí)間差”格式冲甘,比如:10 + (1534694400 - 1534649521) = 44889
方式二,score 為浮點(diǎn)數(shù)途样,采用“整數(shù)部分使用得分江醇,小數(shù)部分使用時(shí)間差(截止時(shí)間減去創(chuàng)建時(shí)間)”格式。比如:10.44879

一般建議用第二種方式何暇,因?yàn)樘找梗?dāng)需求不僅需要排序,還需展示得分時(shí)裆站,可以將 score 強(qiáng)制轉(zhuǎn)化成整形条辟,即可獲取到得分。需要注意的是宏胯,得分最好不要太大羽嫡, score得分盡量控制在16位以下(浮點(diǎn)數(shù)時(shí),小數(shù)點(diǎn)前后位數(shù)和不要超過16位肩袍,最好15位)杭棵。超過16位后,score值存入redis氛赐,會(huì)發(fā)生精度丟失魂爪。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市艰管,隨后出現(xiàn)的幾起案子滓侍,更是在濱河造成了極大的恐慌,老刑警劉巖牲芋,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撩笆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缸浦,警方通過查閱死者的電腦和手機(jī)夕冲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來餐济,“玉大人耘擂,你說我怎么就攤上這事⌒跄罚” “怎么了醉冤?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵秩霍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蚁阳,道長(zhǎng)铃绒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任螺捐,我火速辦了婚禮颠悬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘定血。我一直安慰自己赔癌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布澜沟。 她就那樣靜靜地躺著灾票,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茫虽。 梳的紋絲不亂的頭發(fā)上刊苍,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音濒析,去河邊找鬼正什。 笑死,一個(gè)胖子當(dāng)著我的面吹牛号杏,可吹牛的內(nèi)容都是我干的婴氮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼馒索,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼莹妒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绰上,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渠驼,沒想到半個(gè)月后蜈块,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迷扇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年百揭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜓席。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡器一,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厨内,到底是詐尸還是另有隱情祈秕,我是刑警寧澤渺贤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站请毛,受9級(jí)特大地震影響志鞍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜方仿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一固棚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仙蚜,春花似錦此洲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至艳丛,卻和暖如春匣掸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氮双。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工碰酝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戴差。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓送爸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親暖释。 傳聞我的和親對(duì)象是個(gè)殘疾皇子袭厂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容