C# Cache緩存讀取設置


因為之前用的是Redis,准備用繼續Redis緩存某些小table的數據(主外鍵之類的),無奈不知道外網地址,問老大,曰:用Cache做吧。好吧......快哭了

網上找了一番,好多缺少引用的,添加了也沒好,弄了大概一個多小時,發現很無奈啊,突然想到以前的項目里面好像有用過吼~

簡直不要太容易啊~~~


下面步入正題了:

先創建一個CacheHelper.cs類,代碼如下

[csharp]  view plain  copy
  1. using System;  
  2. using System.Web;  
  3. using System.Collections;  
  4. using System.Web.Caching;  
  5.   
  6. public class CacheHelper  
  7. {  
  8.     /// <summary>  
  9.     /// 獲取數據緩存  
  10.     /// </summary>  
  11.     /// <param name="cacheKey">鍵</param>  
  12.     public static object GetCache(string cacheKey)  
  13.     {  
  14.         var objCache = HttpRuntime.Cache.Get(cacheKey);  
  15.         return objCache;  
  16.     }  
  17.     /// <summary>  
  18.     /// 設置數據緩存  
  19.     /// </summary>  
  20.     public static void SetCache(string cacheKey, object objObject)  
  21.     {  
  22.         var objCache = HttpRuntime.Cache;  
  23.         objCache.Insert(cacheKey, objObject);  
  24.     }  
  25.     /// <summary>  
  26.     /// 設置數據緩存  
  27.     /// </summary>  
  28.     public static void SetCache(string cacheKey, object objObject, int timeout = 7200)  
  29.     {  
  30.         try  
  31.         {  
  32.             if (objObject == nullreturn;  
  33.             var objCache = HttpRuntime.Cache;  
  34.             //相對過期  
  35.             //objCache.Insert(cacheKey, objObject, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null);  
  36.             //絕對過期時間  
  37.             objCache.Insert(cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), TimeSpan.Zero, CacheItemPriority.High, null);  
  38.         }  
  39.         catch (Exception)  
  40.         {  
  41.             //throw;  
  42.         }  
  43.     }  
  44.     /// <summary>  
  45.     /// 移除指定數據緩存  
  46.     /// </summary>  
  47.     public static void RemoveAllCache(string cacheKey)  
  48.     {  
  49.         var cache = HttpRuntime.Cache;  
  50.         cache.Remove(cacheKey);  
  51.     }  
  52.     /// <summary>  
  53.     /// 移除全部緩存  
  54.     /// </summary>  
  55.     public static void RemoveAllCache()  
  56.     {  
  57.         var cache = HttpRuntime.Cache;  
  58.         var cacheEnum = cache.GetEnumerator();  
  59.         while (cacheEnum.MoveNext())  
  60.         {  
  61.             cache.Remove(cacheEnum.Key.ToString());  
  62.         }  
  63.     }  
  64. }  

引用也貼在上面了,就這么幾個。

然后是調用:


[csharp]  view plain  copy
  1. public IEnumerable<CompanyModel> FindCompanys()  
  2.         {  
  3.             var cache = CacheHelper.GetCache("commonData_Company");//先讀取  
  4.             if (cache == null)//如果沒有該緩存  
  5.             {  
  6.                 var queryCompany = _base.CompanyModel();//從數據庫取出  
  7.                 var enumerable = queryCompany.ToList();  
  8.                 CacheHelper.SetCache("commonData_Company", enumerable);//添加緩存  
  9.                 return enumerable;  
  10.             }  
  11.             var result = (List<CompanyModel>)cache;//有就直接返回該緩存  
  12.             return result;  
  13.         }  

測試結果也貼上來看看好了:


首次加載進來是為null,然后讀取數據庫,添加進緩存,當前返回前台的是從數據庫中取出的數據。


刷新頁面,發現緩存中已經有了讀出的30條數據,


然后接下來走,返回緩存中的數據:


大致這些了。End

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM