Redis應用場景 計數器

2021-10-06 15:27:44 字數 1932 閱讀 4504

參考文件

計數器可以分為:

incr bilibili:counter:play:vedio:bv001
優點:精確統計,記憶體花銷少;

# 模擬使用者點播

sadd bilibili:played:vedio:bv001 uid001

sadd bilibili:played:vedio:bv001 uid002

sadd bilibili:played:vedio:bv001 uid003

sadd bilibili:played:vedio:bv001 uid001

scard bilibili:played:vedio:bv001

缺點:記憶體花銷大。

# 模擬使用者點播

pfadd bilibili:playedusers:vedio:bv001 uid001

pfadd bilibili:playedusers:vedio:bv001 uid002

pfadd bilibili:playedusers:vedio:bv001 uid003

pfadd bilibili:playedusers:vedio:bv001 uid001

pfadd bilibili:playedusers:vedio:bv001 uid002

pfcount bilibili:playedusers:vedio:bv001

優點:記憶體花銷小,支援去重。

缺點:統計會有誤差。

參考:

秒殺活動時,限制單個ip或使用者單位時間內請求介面的次數。

特點:乙個有有效期的計數器。

比如,10秒鐘內單個ip請求介面次數超過5次時,提示操作過於頻繁。

# 模擬客戶端對商品product001發起下單

incr iplimit:product001:192.168.0.31

# 設定限制有效期為10妙

expire iplimit:product001:192.168.0.31 10

# 模擬客戶端繼續發起請求

incr iplimit:product001:192.168.0.31

incr iplimit:product001:192.168.0.31

incr iplimit:product001:192.168.0.31

incr iplimit:product001:192.168.0.31

# 判斷是否達到限制次數

get iplimit:product001:192.168.0.31

也可以根據使用者id進行限制

incr uidlimit:product001:uid001
參考:

3分鐘內連續3次登入失敗,賬號被鎖定5分鐘。

特點:乙個有效期定時器 + 乙個有效期的黑名單。

# 模擬首次登入失敗,設定登入失敗有效期為3分鐘(180秒)

incr loginfailed:user01

expire loginfailed:user01 180

# 模擬繼續登入失敗

incr loginfailed:user01

incr loginfailed:user01

# 判斷登入失敗次數是否達到限制

get loginfailed:user01

# 鎖定賬號5分鐘(300秒)

setex lockeduser:user01 300 user01

# 判斷賬號是否已鎖定

get lockeduser:user01

redis的計數器應用

redis的計數器應用 唯一計數是 系統中十分常見的乙個功能特性,例如 需要統計每天訪問的人數 unique visitor 也就是 uv 計數問題很常見,但解決起來可能十分複雜 一是需要計數的量可能很大,比如大型的站點每天有數百萬的人訪問,資料量相當大 二是如果通過資料庫表來存資料,比如記錄一篇文...

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...

Redis應用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用redis靈活多變的資料結構和資料操作,為不同的大象構建不同的冰箱。redis常用資料型別 redis最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...