背景:
實際專案中,很多地方需要把資料快取起來,以加快資料訪問速度。比如字典表,比如資料機房表等等,快取的實現有很多方式,如果專案中有用到mybatis,可以使用二級快取來解決資料的快取問題。
現狀:一般mybatis通過oscache來實現他的二級快取,然而這種方式存在如下幾個問題:
1、oscache可以用來快取頁面和資料物件,但資料通常存放在記憶體中,專案多例項環境下無法解決快取更新和過期的問題。
2、oscache可以將資料通過io寫到硬碟保持資料一致性,但此舉會浪費資源
解決方案:
使用redis實現一套mybatis二級快取外掛程式,將資料從記憶體轉移到redis中,各個專案訪問唯一乙個redis例項(或集群),這樣就保證在任意時刻,快取的變化都會被所有專案感知,並使用最新的快取資料;同時,redis的高效能也保證了快取資料的高速讀取。
實現步驟:
目前mybatis社群開放了mybatis-redis專案,可以從**倉庫獲取對應依賴。
pom.xml
org.mybatis.caches
mybatis-redis
1.0.0-beta2
redis.clients
jedis
2.8.0
src/redis.properties
blockwhenexhausted=true
evictionpolicyclassname=org.apache.commons.pool2.impl.defaultevictionpolicy
fairness=false
host=127.0.0.1
port=6379
jmxenabled=true
jmxnamebase=pool
jmxnameprefix=pool
lifo=true
maxidle=8
maxtotal=8
maxwaitmillis=-1
minevictableidletimemillis=60000
minidle=0
numtestsperevictionrun=-1
softminevictableidletimemillis=1800000
testonborrow=false
testoncreate=false
testonreturn=false
testwhileidle=true
timebetweenevictionrunmillis=3000
insert into l_access (
id,……
)
values
(
#,……
);
mybatis二級快取
配置檔案 不用配置也是預設開啟的 在sqlmapconfig.xml中 cacheenabled value true 如果不需要二級快取,可以在設定禁用二級快取 select 這樣每次都是從資料庫中讀取 在執行insert,update,delete後會重新整理快取 清空快取 可以設定不重新整理 ...
mybatis 二級快取
一 mybatis 二級快取 3 mybatis 預設二級快取未開啟 內建是支援二級快取的。但是由於本身是資料庫管理元件 所以快取並不好用 所以還是要用第三方的快取機制。典型的 ehcache 二 二級快取的常見演算法 lru least recently used 這種演算法是在每個物件中維護乙個...
Mybatis二級快取
原文找不到了,如果作者看到了可以留下位址,我再加上引用 sqlsession2去查詢使用者id為1的使用者資訊,去快取中找是否存在資料,如果存在直接從快取中取出資料。明白了mybatis中二級快取的原理後,接下來就是如何使用二級快取了。在使用之前,首先得開啟二級快取的開關。2.1 開啟二級快取 2....