日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ibatis 高速缓存

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ibatis 高速缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、緩存介紹
1.1、引入
???? 什么影響Internet訪問速率?
???? 訪問網站的過程是通過建立在TCP/IP協議之上的HTTP協議來完成的。從客戶端發出一個HTTP請求開始,用戶所經歷的等待時間主要決定于DNS和網站的響應時間。網站域名首先必須被DNS服務器解析為IP地址,HTTP的延時則由在客戶端和服務器間的若干個往返時間所決定。
? 往返時間是指客戶端等待每次請求的響應時間,平均往返時間取決于三個方面:網站服務器的延時; 由路由器、網關、代理服務器和防火墻引入的延時;不同通信鏈路上的數據傳輸速率.

1.2、緩存對象
???? 理論上,Web分層設計的各個層都可以有緩存,Web中的任何對象都可以緩存。
1.2.1、Http請求結果的緩存
???? 瀏覽器緩存、代理緩存、服務器端方向代理緩存、使用Filter實現對請求結果頁面的緩存
1.2.2、Java對象的緩存
???? 緩存數據庫查詢結果對象

1.3、緩存介質[保存在哪里]
???? 從硬件介質上來將無非就是兩種,內存和硬盤.但是往往我們不會從硬件上來劃分,一般的劃分方法是從技術上劃分,可以分成幾種,內存,硬盤文件.數據庫.

1.4、緩存的類型
???? 網絡緩存可以在客戶端,也可以在網絡上,由此我們將緩存分為兩類:瀏覽器緩存和代理緩存。
1.4.1、瀏覽器緩存

???? 幾乎目前所有的瀏覽器都有一個內置的緩存,它們通常利用客戶端本地的內存和硬盤來完成緩存工作,同時允許用戶對緩存的內容大小作控制。
1.4.2、代理緩存

???? 代理緩存是一種獨立的應用層網絡服務,它更像E-mail、Web、DNS等服務。許多用戶不僅可以共享緩存,而且可以同時訪問緩存中的內容。其工作原理:當代理緩存收到客戶端的請求時,它首先檢查所請求的內容是否已經被緩存。如果沒有找到,緩存必須以客戶端的名義轉發請求,并在收到服務器發出的文件時,將它以一定的形式保存在本地硬盤,并將其發送給客戶端。

1.5、緩存更新策略
1.5.1 FIFO[first in first out]
???? 最先進入緩存得數據在緩存空間不夠情況下(超出最大元素限制時)會被首先清理出去
1.5.2 LFU[Less Frequently Used]
???? 一直以來最少被使用的元素會被被清理掉。這就要求緩存的元素有一個hit 屬性,在緩存空間不夠得情況下,hit 值最小的將會被清出緩存。
1.5.3 LRU[Least Recently Used]
???? 最近最少使用的,緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地方來緩存新的元素的時候,那么現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。

二.iBATIS高速緩存介紹
2.1 iBATIS高速緩存的關注點
???? iBATIS高速緩存只關注如何在持久層對查詢結果進行緩存。

2.2 iBATIS對高速緩存管理的幫助
???? iBATIS帶來的好處就是通過配置文件來管理高速緩存,幫助避免因手工管理高速緩存結果及其依賴性而造成的大量繁瑣的工作。

2.3 iBATIS高速緩存和傳統O/RM高速緩存的區別
???? iBATIS的思想是建立SQL語句到對象的映射,而不是建立數據庫表到對象的映射。傳統O/RM工具主要關注數據庫表到對象的映射。傳統的O/RM高速緩存會為其管理的每個對象維護一個OID[object identification,對象標識],就像數據庫需要管理其表中的每條記錄的唯一性一樣。這意味著,如果兩個不同的結果都返回同一個對象,那么該對象將只被高速緩存一次。iBATIS不這樣,關注的是SQL語句的執行結果,我們不會根據對象的唯一性來高速緩存它們iBATIS高速緩存的所有結果,而不考慮所標識的對象是否存在于高速緩存中。

三.配置iBATIS緩存
3.1 、cacheModel標簽
???? cacheModel標簽用來配置iBATIS的高速緩存,cacheModel標簽的屬性包括四個屬性
?? ?? id[必需]
???? 該值用來指定一個唯一的ID,便于為需要使用此高速緩存模型所配置的高速緩存的查詢已映射語句使用。
?? ? type[必需]
???? 此屬性用于指定高速緩存所配置的高速緩存的類型。其有效值包括MEMORY LRU FIFO OSCACHE,該屬性也可取值為某個自定義CacheController實現的全限定名。
???? readOnly[可選]
???? 取值為true時表示高速緩存將僅僅用作只讀緩存,從只讀高速緩存中讀出的對象的特性值不允許修改。
???? serialize[可選]
???? 該屬性用于指定在讀取高度緩存內容時是否要進行“深復制”
???? readOnly、serialize屬性經常聯合起來使用。

3.2 、iBATIS高速緩存模型的類型
3.2.1 MEMORY
???? MEMORY高速緩存是一種基于引用的高速緩存。MEMORY高速緩存模型對于那些更關注內存的管理策略而不是對象的訪問策略的應用程序而言是完美的。有了STRONG、SOFT、WEAK這三種引用類型,就可以確定哪些結果應該比其他結果保留更長的時間。
3.2.2 LRU
???? LRU類型的高速緩存模型使用最近最少使用策略來管理高速緩存。該高速緩存的內部機制會在后臺記錄哪些對象最近最少使用,一旦超過高速緩存大小限制就會廢棄它們。大小限制規定了高速緩存中可以存放的對象數目。應避免將那些占用較大內存的對象放置在此類高速緩存中,否則內存會很快耗盡。
???? LRU高速緩存非常設用于那些需要根據某些特定對象的訪問頻率來管理的高速緩存的情況。通常這種高速緩存策略試用于那些需要高速緩存用于分頁結果或關鍵詞搜索結果的對象應用程序中。
3.2.3 FIFO
???? FIFO高速緩存模型采用先進先出的管理策略,是一種基于時間的策略,使用于放置那些初放入時使用頻率高、隨時間流逝訪問頻率就會降低的對象。如:報表、報告股票價格。
3.2.4 OSCACHE
???? OSCache是個一個廣泛采用的高性能的J2EE緩存框架,OSCache能用于任何Java應用程序的普通的緩存解決方案。OSCache有以下特點:
??? ? 緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
永久緩存--緩存能隨意的寫入硬盤,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啟。
支持集群--集群緩存數據能被單個的進行參數配置,不需要修改代碼。
緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)
3.2.5自定義高速緩存模型
???? 只需要實現com.ibatis.sqlmap.engine.cache.CacheController接口即可,配置時設定type為全限類名或其別名即可。

3.3 高速緩存的清除
??? 使用flushOnExecute、flushInterval標簽可以定義清空緩存觸發條件
?? <flushOnExecute>??? 定義查詢已映射語句,其執行將引起相關高速緩存的清除
?? <flushInterval>??? 定義一個時間間隔,高速緩存將以此間隔定期清除
?? <flushInterval>標簽屬性如下:
?? hours(可選)??? 每次清除高速緩存前應該經過的小時數
?? minutes(可選)??? 每次清除高速緩存前應該經過的分鐘數
?? seconds(可選)??? 每次清除高速緩存前應該經過的秒數
?? milliseconds(可選)??? 每次清除高速緩存前應該經過的毫秒數?

3.4 設置高速緩存模式實現的特性
由于高速緩存模型只是一些可以插入到iBATIS框架的組件,它甚至允許用戶自己定制,因此必須有一種方式能為這些組件提供任意的值。<property>標簽就是用來完成此任務的。name :所設定的特性的名稱,value:所設定的特性的值。

3.5 常見問題
3.5.1如何選擇iBATIS高速緩存模型類型
???? 如何選擇一個適合實際應用情況的高速緩存模型類型是一個很負責的問題,需要考慮諸多因素。
需要考慮的因素:
??? 1.當前應用程序是否是數據庫的唯一操作入口
??? 2.讀寫屬性
??? 3.緩存時間間隔
??? 4.失效控制
??? 5.最大保存對象數目
?

轉載于:https://blog.51cto.com/392155455/1073816

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ibatis 高速缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。