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



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