Redis 企業應用場景
Redis 企業應用場景
一 短信登錄
基于Redis實現共享session登錄
選擇合適的數據結構
選擇合適的key
選擇合適的存儲粒度
二 數據緩存
2.1 緩存更新策略
內存淘汰:利用Redis內置的內存淘汰機制,當內存不足時自動淘汰部分數據,下次查詢時更新數據。
超時剔除:給數據添加TTL時間,到期后自動刪除。
主動更新:編寫代碼,修改數據的時候同時更新緩存。
先操作數據庫,再刪緩存。
2.2 緩存問題
概念
客戶端請求的數據的數據不在數據庫中,這樣緩存永遠也不能生效,請求一直到數據庫層,一般可能是黑客攻擊。
解決方案
緩存空對象:實現簡單,維護方便,但有額外的內存消耗,可能短時間數據不一致。
布隆過濾器:根據算法緩存索引,如果不存在則不存在,返回存儲也有一定程度不存在的可能,內存占用小,沒有對于的key,存在誤判
增加ID的復雜度,避免被猜到ID的規律。
做好數據的基礎校驗。
用戶權限。
熱點參數的限流。
概念
同一時刻存在大量的key同事失效或redis宕機,導致大量請求到達數據庫。
解決方案
給不同的key的ttl添加隨機值
利用redis集群提升高可用性
給緩存業務添加降級限流策略
給業務添加多級緩存
概念
緩存擊穿問題也稱為熱點key問題,一個被高并發訪問并且緩存重建業務較復雜的key突然失效,無數的請求訪問會瞬間給數據庫帶來巨大壓力。
解決方案
互斥鎖
邏輯過期
三 消息隊列實現秒殺
3.1 全局唯一ID生成策略
UUID
Redis自增
snowflake算法
數據庫自增
3.2 并發線程安全
3.3 樂觀鎖
版本法
CAS法:基于數據邏輯進行判斷。
四 分布式鎖
多進程可見,并且互斥的鎖
4.1 特征
多進程可見
互斥
高可用
高性能
安全性
4.2 實現分布式鎖
獲取鎖
互斥:確保只有一個線程獲取鎖(set nx ex,獲取鎖的時候存入線程ID)
釋放鎖
手動釋放:釋放的時候判斷是否與當前線程ID一致,如果不一致則不釋放。
超時釋放:獲取鎖時添加超時時間
Redis 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。