激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - MyBatis緩存實現原理及代碼實例解析

MyBatis緩存實現原理及代碼實例解析

2020-08-28 00:13IT-執念 Java教程

這篇文章主要介紹了MyBatis緩存實現原理及代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、一級緩存(本地緩存)

  sqlSession級別的緩存。一級緩存是一直開啟的;SqlSession級別的一個Map與數據庫同一次會話期間查詢到的數據會放在本地緩存中。以后如果需要獲取相同的數據,直接從緩存中拿,沒必要再去查詢數據庫;

  一級緩存失效情況(沒有使用到當前一級緩存的情況,效果就是,還需要再向數據庫發出查詢):

  1、sqlSession不同

  2、sqlSession相同,查詢條件不同。(當前一級緩存中還沒有這個數據)

  3、sqlSession相同,兩次查詢之間執行了增刪改操作(這次增刪改可能對當前數據有影響)

  4、sqlSession相同,手動清除了一級緩存。

二、二級緩存(全局緩存)

  基本namespace級別的緩存:一個namespace對應一個二級緩存:

  工作機制:

  1、一個會話,查詢一條數據,這個數據就會被放在當前會話的一級緩存中:

  2、如果會話關閉:一級會話中的緩存會被保存到二級緩存中;新的會話查詢信息,就可以參照二級緩存中的內容。

  3、不同namespace查出的數據會放在自己對應的緩存中(map)

    效果:數據會從二級緩存中獲取,查出的數據會默認先放在一級緩存中,只有會話提交或者關閉以后,一級緩存中的數據才會轉移到二級緩存中

  4、如何開啟二級緩存:

   ?、匍_啟全局二級緩存配置:    

<setting name="cacheEnabled" value="true"/>

    ②去mapper.xml中配置使用二級緩存:

<cache></cache>

   ?、蹖腜OJO實現序列化接口

  5、和緩存有關的設置屬性

   ?、賑acheEnabled=true:false:關閉緩存(二級緩存關閉)(一級緩存一直可用的)

    ②每個select標簽都有useCache="true":false:不使用緩存(一級緩存依然使用,二級緩存不使用)

    ③ 每個增刪改標簽的:flushCache="true":(一級二級都會清除)

   ?、躶qlSession.clearCache();只是清楚當前session的一級緩存;

   ?、萑峙渲胠ocalCacheScope:

      本地緩存作用域:(一級緩存SESSION);當前會話的所有數據保存在會話緩存中;

      STATEMENT:可以禁用一級緩存。

  6、第三方緩存整合

   ?、賹氲谌骄彺姘纯?;

    ②導入與第三方緩存整合的適配包;官方有;

   ?、踡apper.xml中使用自定義緩存

    使用Ehcache緩存框架

<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>

  7、cache標簽配置參數:   

<cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024"></cache>

  eviction:緩存的回收策略:

    • LRU – 最近最少使用的:移除最長時間不被使用的對象。
    • FIFO – 先進先出:按對象進入緩存的順序來移除它們。
    • SOFT – 軟引用:移除基于垃圾回收器狀態和軟引用規則的對象。
    • WEAK – 弱引用:更積極地移除基于垃圾收集器狀態和弱引用規則的對象。
    • 默認的是 LRU。

  flushInterval:緩存刷新間隔

    緩存多長時間清空一次,默認不清空,設置一個毫秒值。

  readOnly:是否只讀:

    true:只讀;mybatis認為所有從緩存中獲取數據的操作都是只讀操作,不會修改數據。mybatis為了加快獲取速度,直接就會將數據在緩存中的引用交給用戶。不安全,速度快。

    false:非只讀:mybatis覺得獲取的數據可能會被修改。mybatis會利用序列化&反序列的技術克隆一份新的數據給你。安全,速度慢

  size:緩存存放多少元素;

  type="":指定自定義緩存的全類名;實現Cache接口即可;

三、ehcache.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
 <!-- 磁盤保存路徑 -->
 <diskStore path="java.io.tmpdir"/>
 
 <defaultCache
  maxElementsInMemory="1"
  maxElementsOnDisk="10000000"
  eternal="false"
  overflowToDisk="true"
  timeToIdleSeconds="120"
  timeToLiveSeconds="120"
  diskExpiryThreadIntervalSeconds="120"
  memoryStoreEvictionPolicy="LRU">
 </defaultCache>
</ehcache>

屬性說明:
l diskStore:指定數據在磁盤中的存儲位置。
l defaultCache:當借助CacheManager.add("demoCache")創建Cache時,EhCache便會采用<defalutCache/>指定的的管理策略

以下屬性是必須的:
l maxElementsInMemory - 在內存中緩存的element的最大數目
l maxElementsOnDisk - 在磁盤上緩存的element的最大數目,若是0表示無窮大
l eternal - 設定緩存的elements是否永遠不過期。如果為true,則緩存的數據始終有效,如果為false那么還要根據timeToIdleSeconds,timeToLiveSeconds判斷
l overflowToDisk - 設定當內存緩存溢出的時候是否將過期的element緩存到磁盤上

以下屬性是可選的:
l timeToIdleSeconds - 當緩存在EhCache中的數據前后兩次訪問的時間超過timeToIdleSeconds的屬性取值時,這些數據便會刪除,默認值是0,也就是可閑置時間無窮大
l timeToLiveSeconds - 緩存element的有效生命期,默認是0.,也就是element存活時間無窮大
diskSpoolBufferSizeMB 這個參數設置DiskStore(磁盤緩存)的緩存區大小.默認是30MB.每個Cache都應該有自己的一個緩沖區.
l diskPersistent - 在VM重啟的時候是否啟用磁盤保存EhCache中的數據,默認是false。
l diskExpiryThreadIntervalSeconds - 磁盤緩存的清理線程運行間隔,默認是120秒。每個120s,相應的線程會進行一次EhCache中數據的清理工作
l memoryStoreEvictionPolicy - 當內存緩存達到最大,有新的element加入的時候, 移除緩存中element的策略。默認是LRU(最近最少使用),可選的有LFU(最不常使用)和FIFO(先進先出)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/zhaobingqing/p/7109950.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 色中色在线播放 | 性欧美暴力猛交69hd | 夜夜看| h视频免费观看 | 黄色av片三级三级三级免费看 | 国产精品自拍片 | 国产毛片毛片毛片 | 91av在线免费 | 黄色毛片18| 鲁丝一区二区二区四区 | xxxx18韩国护士hd老师 | 亚洲人成电影在线 | 免费的性生活视频 | 欧美国产日韩在线 | 欧美a视频在线观看 | 黄色伊人网站 | 一级α片| 天堂成人国产精品一区 | 91久久精品一 | 中文字幕免费在线观看视频 | 97色在线观看免费视频 | 99亚洲国产精品 | 久久精品无码一区二区日韩av | 亚洲国产精品一区二区久久 | 亚洲精品v天堂中文字幕 | 日本aaaa片毛片免费观蜜桃 | 久久久精品视频在线观看 | 欧美黄在线 | 免费三级大片 | 精品一区二区三区在线观看国产 | 国产成人精品午夜视频' | 免费观看国产精品视频 | 亚洲精品成人久久久 | 精品亚洲成a人在线观看 | 久久精品亚洲精品国产欧美kt∨ | 九九热久久免费视频 | 亚洲国产精品一区二区久久 | 日韩美香港a一级毛片免费 欧美一级淫片007 | 日本免费一区二区三区四区 | 在线看免电影网站 | 欧美日韩高清一区 |