<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Strato NCache非阻塞式緩存框架

          聯(lián)合創(chuàng)作 · 2023-10-01 12:30

          緩存是服務(wù)器程序中經(jīng)常用到的技術(shù),使用緩存可以大大降低服務(wù)器的壓力。目前常見的緩存工具都很好地解決了生命周期、存儲、命中率等關(guān)鍵算法,但是絕大多數(shù)的緩存框架對于數(shù)據(jù)更新都是阻塞式的,即當(dāng)緩存過期時會等待應(yīng)用程序重新獲取值。其性能曲線類似下圖(假設(shè)刷新一次需要5ms):

          阻塞式的緩存處理方式,每次的重新取值都會出現(xiàn)一次波峰,用戶在使用系統(tǒng)的過程中將產(chǎn)生頓挫感。

          NCache 建立了一套抽象的非阻塞式緩存模型與 API,應(yīng)用 NCache 的緩存處理時效如下圖所示:

          使用 NCache 僅需在首次加載數(shù)據(jù)時停頓,此后的更新都將在后臺線程完成。

          NCache特性一覽:

          • 僅首次加載時阻塞,此后刷新都由后臺完成

          • 開發(fā)者可自定義線程池,控制線程調(diào)度及溢出機制

          • 默認提供基于 FIFO 的內(nèi)存存儲,對象超出將被移除

          • 支持鏈?zhǔn)綌?shù)據(jù)存儲,開發(fā)者可附加其他存儲方式,如 Redis、Memcached、Ehcache

             

          快速上手:

          NCache 使用非常簡單,只需將 jar 包放入classpath,然后即可調(diào)用。下面是一個簡單的示例:

          int cacheTTL=5*1000;//緩存有效期5秒鐘
                  NCache<String> ncache=NCache.newInstance();//ncache可復(fù)用
                  ncache.setTimeToLive(cacheTTL);
                  DataLoader<String> loader=new DataLoader<String>() {//loader可復(fù)用
                      @Override
                      public String load() throws Exception {
                          int expense=new Random().nextInt(2000);//隨機模擬取數(shù)據(jù)性能消耗
                          String value="VALUE_"+expense;
                          System.err.println("Reloading:"+value);
                          Thread.sleep(expense);
                          return value;
                      }
                  };
                  for(int i=0;i<10000;i++){
                      String value=ncache.get("somekey", loader);
                      System.out.println("Get:"+value);
                      try {
                          Thread.sleep(500);
                      } catch (InterruptedException e) {
                          e.printStackTrace();
                      }
                  }

          點此查看快速上手指引

          源碼:https://svn.zim-soft.com/svn/strato/tags/ncache/strato.ncache.v2_6_5  (用戶名:guest  密碼:無)

          瀏覽 15
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久夜色精品网站 | 大香蕉伊人7 | 深夜福利久久 | 成人H动漫精品一区二区无码软件 | 亚洲视频小说 |