參考文件
計數器可以分為:
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最為常用的資料型別主要有以下五種 在具體描述這幾種資料型別之...