C# Cache緩存讀與取設置

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

using System;

using System.Web;

using System.Collections;

using System.Web.Caching;

public class CacheHelper

{

    /// <summary>

    /// 獲取數據緩存

    /// </summary>

    /// <param name="cacheKey">鍵</param>

    public static object GetCache(string cacheKey)

    {

        var objCache = HttpRuntime.Cache.Get(cacheKey);

        return objCache;

    }

    /// <summary>

    /// 設置數據緩存

    /// </summary>

    public static void SetCache(string cacheKey, object objObject)

    {

        var objCache = HttpRuntime.Cache;

        objCache.Insert(cacheKey, objObject);

    }

    /// <summary>

    /// 設置數據緩存

    /// </summary>

    public static void SetCache(string cacheKey, object objObject, int timeout = 7200)

    {

        try

        {

            if (objObject == null) return;

            var objCache = HttpRuntime.Cache;

            //相對過期

            //objCache.Insert(cacheKey, objObject, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null);

            //絕對過期時間

            objCache.Insert(cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), TimeSpan.Zero, CacheItemPriority.High, null);

        }

        catch (Exception)

        {

            //throw;

        }

    }

    /// <summary>

    /// 移除指定數據緩存

    /// </summary>

    public static void RemoveAllCache(string cacheKey)

    {

        var cache = HttpRuntime.Cache;

        cache.Remove(cacheKey);

    }

    /// <summary>

    /// 移除全部緩存

    /// </summary>

    public static void RemoveAllCache()

    {

        var cache = HttpRuntime.Cache;

        var cacheEnum = cache.GetEnumerator();

        while (cacheEnum.MoveNext())

        {

            cache.Remove(cacheEnum.Key.ToString());

        }

    }

}

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

然後是調用:

public IEnumerable<CompanyModel> FindCompanys()

        {

            var cache = CacheHelper.GetCache("commonData_Company");//先讀取

            if (cache == null)//如果沒有該緩存

            {

                var queryCompany = _base.CompanyModel();//從數據庫取出

                var enumerable = queryCompany.ToList();

                CacheHelper.SetCache("commonData_Company", enumerable);//添加緩存

                return enumerable;

            }

            var result = (List<CompanyModel>)cache;//有就直接返回該緩存

            return result;

        }


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


1.png

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


2.png


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

3.png



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


4.png



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章