溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis二級緩存的缺陷是什么

發布時間:2022-08-25 15:08:06 來源:億速云 閱讀:237 作者:iii 欄目:開發技術

這篇文章主要介紹“Mybatis二級緩存的缺陷是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Mybatis二級緩存的缺陷是什么”文章能幫助大家解決問題。

一級緩存默認是開啟的(但是整合了Spring,Mybatis的一級緩存默認就失效了)

二級緩存是要手動配置開啟的(二級緩存是mapper級別的緩存,可以跨SqlSession)

Mybatis二級緩存

開啟二級緩存(xml方式):在*Mapper.xml中加入如下代碼

<!--eviction: 清空緩存的策略
    readOnly: 是否只讀
    flushInterval: 每個60秒刷新一次緩存
    size: 內存大小,最多存儲結果對象或者列表的512個引用 -->
<cache readOnly="true" eviction="FIFO" flushInterval="60000" size="512"/>

緩存清除策略

  • LRU &ndash; 最近最少使用:移除最長時間不被使用的對象。

  • FIFO &ndash; 先進先出:按對象進入緩存的順序來移除它們。

  • SOFT &ndash; 軟引用:基于垃圾回收器狀態和軟引用規則移除對象。

  • WEAK &ndash; 弱引用:更積極地基于垃圾收集器狀態和弱引用規則移除對象。

兩種方式二選一,如果都配置會報錯:Caches collection already contains value for com.lixianhe.dao.UserMapper

注意:使用Mybatis二級緩存必須是xml寫SQL語句,不能使用注解寫SQL語句

緩存的執行順序

  • 先從二級緩存中查詢,二級緩存沒有進入SqlSession中查詢

  • SqlSession沒有就去數據庫查詢,然后存到一級緩存中,查詢完關閉SqlSession

  • 一級緩存再提交給二級緩存

在開啟二級緩存的情況下執行一條sql

select colA1, colA2, colB1, colB2 
from A, B 
where ...

A表執行了上述的sql
B表更新了字段cloB1,colB2
A表再次執行了上述的sql(前提沒有執行insert、update、delete)
A表第二次就查詢出了臟數據(B表的數據就是臟數據),這個問題對二級緩存來說是一個無解的問題

因此Mybatis二級緩存的使用用一個前提,必須保證所有的增刪改查都在同一個namespace下才行

由于二級緩存的弊端,所以并不建議在實際生產中使用,而是在外部實現自己的緩存,如使用Redis做緩存

關于“Mybatis二級緩存的缺陷是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女