教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Redis有什么優(yōu)缺點?

更新時間:2021年04月30日16時42分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

Redis的優(yōu)點

1.純內存操作。

2.單線程操作,避免了頻繁的上下文切換。

3.采用了非阻塞I/O多路復用機制。

I/O多路復用機制:I/O多路復用就是只有單個線程,通過跟蹤每個I/O流的狀態(tài),來管理多個I/O流。


Redis的缺點

緩存和數據庫雙寫一致性問題

一致性的問題很常見,因為加入了緩存之后,請求是先從Redis 中查詢,如果Redis 中存在數據就不會走數據庫了,如果不能保證緩存跟數據庫的一致性就會導致請求獲取到的數據不是最新的數據。

解決方案:

1、編寫刪除緩存的接口,在更新數據庫的同時,調用刪除緩存的接口刪除緩存中的數據。這么做會有耦合高以及調用接口失敗的情況。

2、消息隊列:ActiveMQ,消息通知。

緩存的并發(fā)競爭問題

并發(fā)競爭,指的是同時有多個子系統(tǒng)去set 同一個key值。

解決方案:最簡單的方式就是準備一個分布式鎖,大家去搶鎖,搶到鎖就做set操作即可。

緩存雪崩問題

緩存雪崩,即緩存同一時間大面積的失效,這個時候又來了一波請求,結果請求都懟到數據庫上,從而導致數據庫連接異常。

解決方案:

1.給緩存的失效時間,加上一個隨機值,避免集體失效。

2.使用互斥鎖,但是該方案吞吐量明顯下降了。

3.搭建Redis 集群。

緩存擊穿問題

緩存穿透,即黑客故意去請求緩存中不存在的數據,導致所有的請求都懟到數據庫上,從而數據庫連接異常。

解決方案:

1、利用互斥鎖,緩存失效的時候,先去獲得鎖,得到鎖了,再去請求數據庫。沒得到鎖,則休眠一段時間重試。

2、采用異步更新策略,無論key 是否取到值,都直接返回,value 值中維護一個緩存失效時間,緩存如果過期,異步起一個線程去讀數據庫,更新緩存。



猜你喜歡:

Redis適合在哪些場景使用?

Redis所有數據放到內存中的原因是什么?

Redis如何實現分布式阻塞隊列?

Redis有哪幾種數據淘汰策略?

傳智教育高級Java培訓課程

0 分享到:
和我們在線交談!