用redis實現“排行榜”、“計數器”、“限速器”

1、排行榜

話不多說直接上代碼,但是需要考慮,併發!併發!!併發!!!

輸入:
	ZINCRBY rank 1 aaa
    ZINCRBY rank 2 bbb
    ZINCRBY rank 3 ccc
    ZINCRBY rank 4 ddd
    ZINCRBY rank 5 eee

    ZREVRANGE rank 0 4 withscores

輸出:
 1) "eee"
 2) "5"
 3) "ddd"
 4) "4"
 5) "ccc"
 6) "3"
 7) "bbb"
 8) "2"
 9) "aaa"
10) "1"

2.計數器

使用思路是:每次有相關操作的時候,就向Redis服務器發送一個incr命令。

注:incr命令是原子性的

3.限速器

限速器是一種可以限制某些操作執行速率的特殊場景。

假設我們要解決如下問題:限制某個api每秒每個ip的請求次數不超過10次。

實現方案:

​ 第一步:設置一個key,然後給個過期時間1秒

​ 第二部:一個ip訪問時給這個key執行incr命令

​ 第三部:給個分支判斷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章