溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mybatis二級(jí)緩存的缺陷是什么

發(fā)布時(shí)間:2022-08-25 15:08:06 來(lái)源:億速云 閱讀:178 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“Mybatis二級(jí)緩存的缺陷是什么”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Mybatis二級(jí)緩存的缺陷是什么”文章能幫助大家解決問(wèn)題。

一級(jí)緩存默認(rèn)是開(kāi)啟的(但是整合了Spring,Mybatis的一級(jí)緩存默認(rèn)就失效了)

二級(jí)緩存是要手動(dòng)配置開(kāi)啟的(二級(jí)緩存是mapper級(jí)別的緩存,可以跨SqlSession)

Mybatis二級(jí)緩存

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

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

緩存清除策略

  • LRU &ndash; 最近最少使用:移除最長(zhǎng)時(shí)間不被使用的對(duì)象。

  • FIFO &ndash; 先進(jìn)先出:按對(duì)象進(jìn)入緩存的順序來(lái)移除它們。

  • SOFT &ndash; 軟引用:基于垃圾回收器狀態(tài)和軟引用規(guī)則移除對(duì)象。

  • WEAK &ndash; 弱引用:更積極地基于垃圾收集器狀態(tài)和弱引用規(guī)則移除對(duì)象。

兩種方式二選一,如果都配置會(huì)報(bào)錯(cuò):Caches collection already contains value for com.lixianhe.dao.UserMapper

注意:使用Mybatis二級(jí)緩存必須是xml寫SQL語(yǔ)句,不能使用注解寫SQL語(yǔ)句

緩存的執(zhí)行順序

  • 先從二級(jí)緩存中查詢,二級(jí)緩存沒(méi)有進(jìn)入SqlSession中查詢

  • SqlSession沒(méi)有就去數(shù)據(jù)庫(kù)查詢,然后存到一級(jí)緩存中,查詢完關(guān)閉SqlSession

  • 一級(jí)緩存再提交給二級(jí)緩存

在開(kāi)啟二級(jí)緩存的情況下執(zhí)行一條sql

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

A表執(zhí)行了上述的sql
B表更新了字段cloB1,colB2
A表再次執(zhí)行了上述的sql(前提沒(méi)有執(zhí)行insert、update、delete)
A表第二次就查詢出了臟數(shù)據(jù)(B表的數(shù)據(jù)就是臟數(shù)據(jù)),這個(gè)問(wèn)題對(duì)二級(jí)緩存來(lái)說(shuō)是一個(gè)無(wú)解的問(wèn)題

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

由于二級(jí)緩存的弊端,所以并不建議在實(shí)際生產(chǎn)中使用,而是在外部實(shí)現(xiàn)自己的緩存,如使用Redis做緩存

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

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI