高並發系列之——緩存中間件Redis


1 概念和使用場景

  下載路徑

2 基本存儲類型

  • String  
  • List  
  • Set  
  • SortedSet  
  • Hash

3 事務

  單線程執行,即只能保證一個client發起的事務中的命令可以連續的執行,而中間不會插入其他client的命令。

  根據事務的四大特性ACID,只保證了原子性、一致性和隔離性

4 如何實現mybatis的二級緩存

  步驟一:新建一個類,用於實現org.apache.ibatis.cache.Cache接口

  步驟二:在mapper.xml中開啟基於redis二級緩存

    <cache type=“com.wooyoo.learning.util.RedisCache”/>

  步驟三:sql語句中增加標簽如,flushCache=true

4.1 二級緩存目的

  取數據時,首先從一級緩存中取,其次蔥二級緩存中,如果二級緩存中有數據,則從二級緩存中取,否則查詢數據庫。

  刪除、更新、增加數據的時候,同時更新緩存。

4.2 什么數據適合存放到二級緩存中

  • 很少被改動;
  • 數據不是很重要,容許出現偶爾的並發數據;
  • 不會被並發訪問;

5 擴展

5.1 緩存穿透

  查詢緩存中不存在的數據,導致直接查詢到數據庫。

  解決方案:第一次查詢不存在的數據時,在緩存中增加一個對應的key為空的數據。

5.2 緩存雪崩

  所有緩存在同一時間全部失效,導致了所有請求都直接訪問數據庫。

  解決方案:設置線程互斥,只讓一個線程構建緩存,其他等待緩存創建完成后再通過緩存取數據。或,設置交錯失效時間

5.3 緩存擊穿

  緩存雪崩的一個特例,不同的是緩存雪崩針對全部數據,緩存擊穿是特定的熱點數據。

  緩存方案:二級緩存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM