-
redis計數器應用場景
查看全部 -
常用數據類型11111
查看全部 -
與memcache對比
查看全部 -
PHP
課程介紹
> 認識Redis的本質:設計目標,應用場景
>理解Redis的工作模式
>認識Redis計數器
>如何用Redis計數器實現并發場景下的數量控制
查看全部 -
課程總結
Redis 的本質
Redis 的工作模式
用 Redis:實現計數器
用 Redis 計數器實現并發場景下的數量控制
查看全部 -
數量控制器 v2
查看全部 -
數量控制器 v1
并發場景:客戶端 A、B 同時訪問數量控制器
問題 1:
A 先執行 incrby,然后 B 執行 set,數據不一致
問題 2:
假定限量 100,A、B 同時讀到當前數量為 99,A、B 執行完 incrby 后,總量為 101,超限了
查看全部 -
Redis 計數器
頻率控制:接口防刷,密碼嘗試次數限制。
數量統計:請求量統計。
數量控制:商品搶購,獎勵額度控制。
查看全部 -
Redis 常用數據類型
STRING 字符串。整數型字符串
HASH 哈希。PHP 關聯數組,Python 字典
LIST 列表。Python 元組
SET 集合。集合中的元素唯一
ZSET 有序集合。元素有分值,用于排序
Redis 的數據類型如此豐富,如果僅僅當作緩存來用,確實是“殺雞焉用牛刀”。Memcache 更合適。
查看全部 -
Redis 優缺點
優點:無需處理并發問題,降低系統復雜度
缺點:不適合緩存大尺寸對象(超過 100KB)(為什么?)
查看全部 -
Redis 的工作模式
單進程 單進程 單進程(重要的事情說三遍?。。。?/p>
阻塞式
Redis 在同一時刻只能處理一個請求,后來的請求需要排隊等待!
查看全部 -
Redis 與 Memcache 對比
Memcache 是內存對象緩存系統,設計目標為通過緩解數據庫的壓力來加快 web 應用的響應速度
Redis 應用場景更豐富,Memcache 僅適合作為緩存使用
查看全部 -
Redis 是什么
緩存
數據庫
消息代理
查看全部 -
課程介紹
認識 Redis 的本質:設計目標,應用場景
理解 Redis 的工作模式
認識 Redis 計數器
如何用 Redis 計數器實現并發場景下的數量控制
查看全部 -
并發場景下數量控制
查看全部 -
v1
function v1() {
?$amountLimit = 100;
? // ...
}
查看全部 -
PHP function
查看全部 -
Linux Redis PHP Nginx
查看全部 -
setnx = set not exists
先計算,后判斷
查看全部 -
并發請求,導致數據不一致問題
set 可能會出現覆蓋
先判斷,后計算,計算錯誤
查看全部 -
流程圖 抽獎
微信搶紅包,金額隨機分配邏輯
查看全部 -
數量控制
商品搶購
抽獎
搶紅包
查看全部 -
超時時間 30s
```sh
127.0.0.1:6379> expire test2 30
(integer) 1
127.0.0.1:6379> ttl test2
(integer) 23
127.0.0.1:6379> ttl test2
(integer) 21
127.0.0.1:6379> ttl test2
(integer) 17
127.0.0.1:6379> ttl test2
(integer) 14
127.0.0.1:6379> ttl test2
(integer) 12
127.0.0.1:6379> ttl test2
(integer) 8
127.0.0.1:6379> ttl test2
(integer) 6
127.0.0.1:6379> ttl test2
(integer) 3
127.0.0.1:6379> ttl test2
(integer) -2
127.0.0.1:6379> ttl test2
(integer) -2
127.0.0.1:6379> exists test2
(integer) 0
127.0.0.1:6379>?
```
查看全部 -
setnx 判斷是否存在,不存在才會set,防止錯誤的覆蓋
```sh
127.0.0.1:6379> get test
"6"
127.0.0.1:6379> setnx test 2020
(integer) 0
127.0.0.1:6379> setnx test2 2020
(integer) 1
127.0.0.1:6379> get test
"6"
127.0.0.1:6379> get test2
"2020"
127.0.0.1:6379>?
127.0.0.1:6379> set test2 77
OK
127.0.0.1:6379> get test2
"77"
```
查看全部 -
```sh
?? ~ redis-cli
127.0.0.1:6379> exists test
(integer) 0
127.0.0.1:6379> set test 3
OK
127.0.0.1:6379> get test
"3"
127.0.0.1:6379> incr test
(integer) 4
127.0.0.1:6379> get test
"4"
(integer) 3
127.0.0.1:6379> incrby test 3
(integer) 7
127.0.0.1:6379> get test
"7"
127.0.0.1:6379> incrby test -1
(integer) 6
127.0.0.1:6379> get test
"6"
127.0.0.1:6379>?
```
查看全部 -
redis 應用場景?
頻率限制, 計數器 key ip value time
數量控制?
數量統計
查看全部 -
Memcache
查看全部 -
redis 數據類型 string hash list set? zset 有序集合
查看全部 -
Redis big key
對象大小 小于100KB?
list 元素個數小于 10 萬個為什么redis 不適合存儲大key對象
查看全部
舉報