用redis實現「排行榜」 「計數器」 「限速器」

2021-09-21 14:01:33 字數 602 閱讀 7384

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.計數器

注:incr命令是原子性的

3.限速器

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

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

實現方案:

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

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

​ 第三部:給個分支判斷

redis實現排行榜

排行榜功能是乙個很普遍的需求。設想在乙個遊戲中,有上百萬的玩家資料,如果現在需要你根據玩家的經驗值整理乙個前20名的排行榜,你會怎麼做呢?你不可能 order by limit 去實現 select from game socre order by score desc limit 0,20 使用 ...

Redis 實現排行榜

不再介紹資料庫做實時排行榜的弊端,直接介紹redis的有序集合的強大作用。有序集合的資料和集合一樣,不能重複,但每個元素又可以關聯乙個分數,這個分數可以重複。需要注意的是,redis版本和命令變化較大,注意執行環境。執行環境 redis 庫版本 3.3.11 redis版本 3.2.1 生成資料 i...

熱門排行榜 redis實現

最近專案架構公升級,主要對效能方面進行公升級。之前熱門排行榜是通過對點讚量,閱讀量,收藏量等一系列的資料在db通過計算查出來的,效率方面不太好。因此考慮對該功能進行公升級優化,並且新增週期性排行榜如月排行,總排行。在引入快取之後首先考慮的是通過快取實現熱門排行榜的功能,但是考慮到首次引入快取擔心快取...