中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

weed3-2.3.3.查詢的緩存控制是什么

發布時間:2021-06-24 14:35:57 來源:億速云 閱讀:113 作者:chen 欄目:大數據

本篇內容主要講解“weed3-2.3.3.查詢的緩存控制是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“weed3-2.3.3.查詢的緩存控制是什么”吧!

Weed3 一個微型ORM框架(只有0.1Mb哦)

源碼: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;
});

框架的緩存控制,也是極為自由的喲。應該是的吧?哈合。

緩存服務的可用情況

1.內置緩存服務

  • org.noear.weed.cache.EmptyCache // 空緩存

  • org.noear.weed.cache.LocalCache // 輕量級本地緩存(基于Map實現)

  • org.noear.weed.cache.SecondCache // 二級緩存(組裝兩個 ICacheServiceEx 實現)

2.擴展緩存服務

  • 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.查詢的緩存控制是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁山县| 华池县| 监利县| 元江| 竹山县| 湘潭县| 辰溪县| 唐河县| 广饶县| 监利县| 华容县| 乐清市| 鹿泉市| 吴堡县| 沁源县| 金阳县| 缙云县| 西充县| 兴和县| 江油市| 吉木萨尔县| 永新县| 白沙| 泗洪县| 砚山县| 安新县| 九江市| 碌曲县| 高碑店市| 大余县| 常宁市| 咸丰县| 商河县| 湖北省| 桐庐县| 曲沃县| 汽车| 八宿县| 西宁市| 桑日县| 遂川县|