您好,登錄后才能下訂單哦!
本篇內容主要講解“weed3-2.3.3.查詢的緩存控制是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“weed3-2.3.3.查詢的緩存控制是什么”吧!
源碼:https://github.com/noear/weed3 源碼:https://gitee.com/noear/weed3
框架提供的是控制服務。而非緩存服務本身,了解這個很重要。
1.緩存服務適配接口 ICacheService(平常用它的加強版 ICacheServiceEx)
//用它可以包裝各種緩存服務 public interface ICacheService { void store(String key, Object obj, int seconds); Object get(String key); void remove(String key); int getDefalutSeconds(); String getCacheKeyHead(); } /** weed3內置了三個實現類: *EmptyCache,空緩存 *LocalCache,本地緩存 *SecondCache,二級緩存容器(可以把兩個 ICacheService 拼到一起,變成一個二級緩存服務;多嵌套一下就是三級緩存服務了) */
2.在緩存服務上進行的操控接口:ICacheController
public interface ICacheController<T> { //使用哪個緩存服務 T caching(ICacheService service); //是否使用緩存 T usingCache(boolean isCache); //使用緩存并設置時間 T usingCache(int seconds); //為緩存添加標簽 T cacheTag(String tag); }
1.先搞個服務實例出來
ICacheService cache = new LocalCache();
2.用起來
使用緩存,時間為默認(會自動產生穩定的緩存key)
db.table("test").select("*").caching(cache).getMapList();
使用緩存,并緩存30s
db.table("test") .caching(cache).usingCache(30) //也可以放在table() 和 select()之間 .select("*").getMapList();
給緩存加個tag(tag 相當于 緩存key的虛擬文件夾)
db.table("test") .caching(cache) .usingCache(30).cacheTag('test_all') //這是tag,不是key .limit(10,20) .select("*").getMapList();
*3.精細控制
根據查詢結果控制緩存時間
db.table("test").where("id=?",10) .caching(cache) .select("*").getItem(UserModel.class,(cu,m)->{ if(m.hot > 2){ uc.usingCache(60 * 5); //熱門用戶緩存5分鐘 }else{ uc.usingCache(30); } });
4.緩存清除
以一個分頁查詢為例
db.table("test").limit(20,10) .caching(cache).cacheTag("test_all") .select("*").getMapList(); db.table("test").limit(30,10) .caching(cache).cacheTag("test_all") .select("*").getMapList(); //不管你有多少分頁,一個tag把它清光 cache.clear("test_all");
5.緩存更新
這個極少用(需要單項更新的緩存,建議用redis)
db.table("test").where("id=?",10) .caching(cache).cacheTag("test_"+10) .select("*").getItem(UserModel.class); cache.update("test_"+10,(UserModel m)->{ m.sex = 10; return m; });
框架的緩存控制,也是極為自由的喲。應該是的吧?哈合。
org.noear.weed.cache.EmptyCache // 空緩存
org.noear.weed.cache.LocalCache // 輕量級本地緩存(基于Map實現)
org.noear.weed.cache.SecondCache // 二級緩存(組裝兩個 ICacheServiceEx 實現)
org.noear.weed.cache.ehcache.EhCache // 基于ehcache封裝
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.ehcache</artifactId> <version>3.2.1.1</version> </dependency>
org.noear.weed.cache.j2cache.J2Cache // 基于國人開發的J2Cache封裝
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.j2cache</artifactId> <version>3.2.1.1</version> </dependency>
org.noear.weed.cache.memcached.MemCache // 基于memcached封裝
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.memcached</artifactId> <version>3.2.1.1</version> </dependency>
org.noear.weed.cache.redis.RedisCache // 基于redis封裝
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.redis</artifactId> <version>3.2.1.1</version> </dependency>
也可以自己封裝個 ICacheServiceEx ...
到此,相信大家對“weed3-2.3.3.查詢的緩存控制是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。