欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

技術(shù)派redis實(shí)現(xiàn)用戶活躍排行榜學(xué)習(xí)

首先定義一個(gè)參數(shù)實(shí)體來涵蓋業(yè)務(wù)場景所需要的參數(shù), 如點(diǎn)贊 評(píng)論等。

梳理業(yè)務(wù)流程 :

增加活躍度:先做一個(gè)冪等來防止重復(fù)加分(創(chuàng)建一個(gè)用戶行為的哈希表 userAction userAction由用戶id和當(dāng)下時(shí)間組成 里面的字段由用戶對某一篇文章的具體行為組成 即文章id+用戶行為)如果字段不存在 說明當(dāng)前用戶并未進(jìn)行有關(guān)操作 則下一步可以給有關(guān)操作字段加分。

減少活躍度:把相關(guān)操作字段刪除(下次就可以再加回來 比如點(diǎn)贊 取消 再點(diǎn)贊),減去對應(yīng)的分?jǐn)?shù)。

榜單更新:日榜和月榜,建立兩個(gè)有序集合,用戶id作字段。每次把用戶行為產(chǎn)生的分?jǐn)?shù)加進(jìn)去。同時(shí)設(shè)置過期時(shí)間。

榜單查詢:通過有序集合對分?jǐn)?shù)進(jìn)行排序 再獲得用戶id 用用戶id查詢一些用戶的簡單的信息 呈現(xiàn)在榜單中

同時(shí) 作者提出了五個(gè)拓展問題

1.如何做防刷?

2.并發(fā)問題怎么規(guī)避?

3.由非原子的redis操作,引入的事務(wù)問題怎么避免?

4.性能測試可以怎么進(jìn)行?

5.數(shù)據(jù)量大時(shí)存儲(chǔ)用戶的操作記錄內(nèi)存占用龐大怎么解決?

我的思考如下:

1.對于防刷,可以有簡單限流:定義一個(gè)變量 如day_limit_praise 記錄用戶一天點(diǎn)贊文章的數(shù)量,并給個(gè)上限,超過則對用戶進(jìn)行提示?;瑒?dòng)窗口限流 : 維護(hù)一個(gè)固定時(shí)長的時(shí)間窗口(如一分鐘)用有序集合 字段和值都是時(shí)間 每次有新請求來的時(shí)候都更新集合 保證最大間隔只有一分鐘 當(dāng)這個(gè)集合超過一定大小 提醒用戶。行為模式識(shí)別:分析操作序列識(shí)別機(jī)器人行為。通過list記錄用戶操作序列 然后遍歷分析是否存在大量連續(xù)點(diǎn)贊 取消 點(diǎn)贊 取消這樣的操作 然后對相應(yīng)的用戶發(fā)送驗(yàn)證碼并限制操作。

2.redis單線程讓它的命令具有天然的原子性 所以zincr本身就是原子操作,不需要額外鎖機(jī)制 。其他的場景還沒學(xué)到 先這樣吧

3.用lua腳本 使用樂觀鎖watch

4.使用相關(guān)工具 如 JMeter、Gatling。

5.冷熱數(shù)據(jù)分離 對近期的數(shù)據(jù)存在redis 較早的數(shù)據(jù)存在mysql 定時(shí)歸檔。 設(shè)置合理的過期時(shí)間, 動(dòng)態(tài)調(diào)整 :每次訪問數(shù)據(jù)都延長它的過期時(shí)間

暫時(shí)先這樣,萬能的牛油們能不能給點(diǎn)建議,謝謝!

全部評(píng)論
老哥也在學(xué)技術(shù)派嗎,我蹲蹲佬的后續(xù)章節(jié)的細(xì)節(jié)
點(diǎn)贊 回復(fù) 分享
發(fā)布于 05-07 15:18 北京

相關(guān)推薦

評(píng)論
1
2
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
牛客企業(yè)服務(wù)