計分翻倍:常見于榜單類的直播送禮活動中;含義為贈送特定高額禮物后一段時間窗口內(nèi)反症,對榜單的新增分?jǐn)?shù)辛块,按比例加倍計分。加倍時期多次贈送特定禮物铅碍,加倍窗口會追加時長润绵。
設(shè)計難點(diǎn):對加倍狀態(tài)的一致性時序處理。
方案對比
方案一胞谈、分布式加鎖尘盼,保證加倍狀態(tài)的修改過程串行化處理。
優(yōu)點(diǎn):邏輯簡單
缺點(diǎn):性能不足
方案二烦绳、編寫lua腳本卿捎,將判斷加倍、更新加倍的處理径密,編寫到lua午阵,交由redis執(zhí)行
優(yōu)點(diǎn):性能優(yōu)異,擁有足夠的原子性
缺點(diǎn):需要編寫lua腳本享扔,編碼底桂、調(diào)試、擴(kuò)展難度較高
方案三惧眠、不處理并發(fā)場景籽懦,純讀取、寫入redis
優(yōu)點(diǎn):邏輯簡單
缺點(diǎn):瞬時多次特定送禮氛魁,會丟失加倍次數(shù)
方案四暮顺、redis ZSet 存儲加倍事件厅篓,遍歷回放判斷當(dāng)前加倍
1、處理特定禮物時拖云,追加寫入加倍事件:
2贷笛、判斷加倍時应又,回放之前的加倍事件宙项,冪等計算出當(dāng)前是否加倍,并嘗試清除過期加倍事件:
優(yōu)點(diǎn):只使用基本的redis結(jié)構(gòu)株扛、命令尤筐;寫操作與讀操作完全隔離開,無需處理原子讀寫洞就;較及時地清除了過期加倍事件盆繁,保證了redis數(shù)據(jù)量不會過大。
缺點(diǎn):比較反直覺