記錄一下自己的聽課筆記,看的網課。
參考資料:https://zhuanlan.zhihu.com/p/157717158
常見應用場景
1 數據緩存
緩存一些常用的、經常訪問的、不經常變化的數據,也就是相對穩定即時性低的,比如說:菜單/權限/類別/數據字典。
2 文章點贊/閱讀量
這樣的數據放緩存是因為文章的閱讀量和點贊量變化太快了,如果頻繁的更新數據庫,數據庫壓力太大了,頂不住的。如果放到redis中緩存起來,讀寫更快。加入開啟redis的數據持久化,就算redis崩掉也沒事,因為數據都存到磁盤里面了,然后定時或者一定次數的寫入數據庫,同步數據就行了。就算數據丟了也沒有問題,不是什么影響業務的數據。
3 密碼錯誤
假如有這樣一種需求:限制24小時內密碼只能錯誤5次,輸入密碼錯誤5次后就不讓登錄了。我們平常是不是有這樣一種做法,在數據表里面加個字段記錄一下這個人的錯誤次數,每次密碼錯誤就更新錯誤次數,判斷錯誤次數是否超出所限制的次數。這時候我們可以放到redis緩存里面使用用戶名做key+次數做value記錄一下這個人的嘗試次數,設置有效期24小時。
4 微信公眾號投票
同密碼錯誤場景一致
5 秒殺
東西少並發高,如果直接訪問數據庫的話數據庫頂不住。加上redis的話,我們可以把庫存放到redis中存儲,redis本身有一個單線程模型,可以來一個請求,我們訪問一下數據庫,如果庫存沒有了直接返回結果,不會再訪問數據庫了。
6 分布式鎖
Redis可用於實現分布式鎖。為了確保分布式鎖可用,至少鎖的實現必須同時滿足以下條件:
1)互斥在任何時候,只有一個客戶端可以持有該鎖;
2)不會發生死鎖;
3)鎖定和解鎖必須是同一客戶端,並且該客戶端無法解鎖他人添加的鎖。
7 分布式 Session
使用Redis在其他存儲上緩存會話的優點是Redis提供了持久性,目前很多解決方案都采用Redis作為會話存儲解決方案。待補充。