• 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;
    }

    测试结果也贴上来看看好了:


    首次加载进来是为null,然后读取数据库,添加进缓存,当前返回前台的是从数据库中取出的数据。

     

    刷新页面,发现缓存中已经有了读出的30条数据,

     

    然后接下来走,返回缓存中的数据:

     

  • 相关阅读:
    【十五分钟Talkshow】fmplan(十五分钟计划)的初步想法
    #ifdef,#ifndef,#define,#endif解析
    mass Framework menu插件
    软件随想
    gwt+smartgwt framework网站开发
    .NET异步
    CentOS6
    【十五分钟Talkshow】谈谈HTML 5及其对Web开发人员的挑战和机遇
    MongoDB源码概述——日志
    TWaver在FTTX设备网管系统中的应用
  • 原文地址:https://www.cnblogs.com/yatai-bd/p/12114990.html
Copyright © 2020-2023  润新知