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

技術派redis實現(xiàn)用戶活躍排行榜學習

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

梳理業(yè)務流程 :

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

減少活躍度:把相關操作字段刪除(下次就可以再加回來 比如點贊 取消 再點贊),減去對應的分數(shù)。

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

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

同時 作者提出了五個拓展問題

1.如何做防刷?

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

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

4.性能測試可以怎么進行?

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

我的思考如下:

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

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

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

4.使用相關工具 如 JMeter、Gatling。

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

暫時先這樣,萬能的牛油們能不能給點建議,謝謝!

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

相關推薦

不愿透露姓名的神秘牛友
05-06 14:15
點贊 評論 收藏
分享
評論
1
2
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
??推髽I(yè)服務