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