<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ABP理論學習之緩存Caching

      返回總目錄


      本篇目錄

      介紹###

      ABP提供了緩存的抽象,它內部使用了這個緩存抽象。雖然默認的實現使用了MemoryCache,但是也可以為其他的緩存提供者進行實現和改變。

      ICacheManager###

      緩存的主要接口是ICacheManager。我們可以注入該接口,然后使用該接口獲得一個緩存對象。例如:

      public class TestAppService : ApplicationService
      {
          private readonly ICacheManager _cacheManager;
      
          public TestAppService(ICacheManager cacheManager)
          {
              _cacheManager = cacheManager;
          }
      
          public Item GetItem(int id)
          {
              //從緩存中獲取
              return _cacheManager
                      .GetCache("MyCache")
                      .Get(id.ToString(), () => GetFromDatabase(id)) as Item;
          }
      
          public Item GetFromDatabase(int id)
          {
              //... 從數據庫中檢索
          }
      }
      
      

      在這個例子中,我們注入了ICacheManager,并獲取了一個叫做MyCache的緩存對象。

      警告:GetCache方法

      不要在構造函數中使用GetCache方法。如果你的類是transient(每次使用都會創建)的,那么這可能會釋放緩存,因為第二次創建類的對象時,會再次調用構造函數,之前的第一次的緩存可能會被釋放。

      ICache###

      ICacheManager.GetCache方法返回一個ICache。緩存對象是單例的,第一次請求時會創建緩存,以后都是返回相同的緩存對象。因此,我們可以在不同的類(客戶端)中共享具有相同名字的相同緩存。

      在樣例代碼中,我們看到了ICache.Get方法的簡單使用。它有兩個參數:

      • key:緩存中一個條目的唯一字符串鍵。
      • 工廠:沒有找到給定key的緩存條目時調用的action。工廠方法應該創建并返回實際的條目。如果給定的key在緩存中找到了,那么不會調用該action。

      ICache接口也有像GetOrDefault,Set,Remove,Clear的方法。同時,這些方法也有異步(async)版本。

      ITypedCache###

      ICache接口的key為string類型,value為object類型。ITypeCache是ICache的包裝器,提供類型安全、泛型的cache。為了將ICache轉為ITypedCache,我們可以使用AsTyped擴展方法,如下所示:

      ITypedCache<int, Item> myCache = _cacheManager.GetCache("MyCache").AsTyped<int, Item>();
      
      

      這樣,我們不需要轉換就可以使用Get方法。

      配置###

      默認的緩存有效期是60min。因此,如果你在60min內都沒有使用緩存中的元素,那么它會自動從緩存中移除。對于所有的緩存或者特定的某個緩存,你都可以配置有效期。

      //為所有緩存配置有效期
      Configuration.Caching.ConfigureAll(cache =>
      {
          cache.DefaultSlidingExpireTime = TimeSpan.FromHours(2);
      });
      
      //為特定的緩存配置有效期
      Configuration.Caching.Configure("MyCache", cache =>
      {
          cache.DefaultSlidingExpireTime = TimeSpan.FromHours(8);
      });
      
      

      這些代碼應該放到模塊中的PreInitialize方法中。有了這樣的配置,MyCache會有8小時的有效期,而其他cache會有2小時有效期。

      一旦cache首次創建(第一次請求時),就會調用配置的action。配置并不只局限于DefaultSlidingExpireTime(默認滾動有效期),因為cache對象是一個ICache,你可以使用它的屬性和方法自由地配置并初始化。

      posted @ 2015-12-17 23:57  tkbSimplest  閱讀(12950)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲AVAV天堂AV在线网阿V| 极品无码国模国产在线观看| 麻豆国产成人AV在线播放 | 亚洲中文精品一区二区| 亚洲高清WWW色好看美女| 欧美一区二区三区欧美日韩亚洲| 四虎影视4hu4虎成人| 少妇爽到爆视频网站免费| 湖州市| 国产偷国产偷亚洲高清日韩| 少妇人妻偷人精品系列| 欧美日激情日韩精品嗯| 婷婷色综合成人成人网小说| 国产天美传媒性色av高清| www成人国产高清内射| 亚洲国产中文字幕精品| 亚洲国产精品久久久天堂麻豆宅男| 337P日本欧洲亚洲大胆精品555588 | 一二三四免费中文字幕| 龙山县| 国产精品国产精品一区精品| 高清中文字幕一区二区| 中文字幕日韩精品无码内射| 国产美女久久精品香蕉| 日韩高清亚洲日韩精品一区二区| 精品久久久久久无码中文野结衣 | 在线a亚洲v天堂网2018| 精品国产色情一区二区三区| 亚洲精品日韩在线丰满| 中国少妇人妻xxxxx| 综合色久七七综合尤物| 日韩中文字幕高清有码| 成人亚洲一级午夜激情网| 欧美三级不卡在线观线看高清| 九九综合va免费看| 国产91色综合久久高清| 亚洲欧洲∨国产一区二区三区| 國產尤物AV尤物在線觀看| 精品国产一区二区三区蜜臀| 国产毛片基地| 国产色无码专区在线观看|