• Cache的使用


    1.Cache与Session的区别
    每个用户都有自己单独的Session对象
    但是放在Cache中的数据是大家共享的

    protected void SetCache()
    {
    //判断缓存是否为空
    if (Cache["UserInfo"] == null)
    {
    Bll.UserInfoBll userInfobll = new Bll.UserInfoBll();

    //如果为空了,需要重新查询数据
    List<UserInfo> list = userInfobll.GetUserInfo();

    //将经常查询,但不是经常改动的数据放在缓存当中
    //将数据放到缓存中
    //第一种方法
    //Cache["UserInfo"] = list; 一般采用这个方法(如果数据修改了,后台添加数据时,提交表单时,可以直接移除Cache,这样不依赖于缓存依赖项)
    //第二种方法(使用下面的重载)
    //public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
    //1.键
    //2.值
    //3.CacheDependency dependencies (监视数据库表的数据是否改动,如果改动会给缓存发送一个消息) 缓存依赖项
    //4.DateTime absoluteExpiration 缓存的过期时间 绝对过期时间 比如 1天
    //5.TimeSpan slidingExpiration 时间差(DateTime-DateTime = TimeSpan(结果的类型是TimeSpan类型))
    //6.CacheItemPriority priority 缓存的优先级
    //7.CacheItemRemovedCallback onRemoveCallback 缓存移除的原因(委托)
    Cache.Insert("UserInfo", list, null, DateTime.Now.AddSeconds(20), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, RemoveCache);
    //强制移除 Cache
    //Cache.Remove(UserInfo);

    }
    else
    {
    List<UserInfo> list = (List<UserInfo>)Cache["UserInfo"];
    }
    }

    /// <summary>
    /// 缓存移除原因
    /// </summary>
    /// <param name="key"></param>
    /// <param name="value"></param>
    /// <param name="reason"></param>
    protected void RemoveCache(string key, object value, CacheItemRemovedReason reason)
    {
    //方法的签名和委托保持一致
    //1.CacheItemRemovedReason F12可以查看原因
    if(reason == CacheItemRemovedReason.Expired)//如果时间到期
    {
    //缓存移除的原因写入日志中
    }
    }

  • 相关阅读:
    C++中使用stringstream进行类型转换操作
    代理模式
    观察者模式 VS 责任链模式
    10.模板方法模式
    2.里氏替换原则
    单一职责原则
    规格模式
    策略模式的扩展——策略枚举
    策略模式 VS 桥梁模式
    原型模式【下】
  • 原文地址:https://www.cnblogs.com/jinjingBlog/p/9792072.html
Copyright © 2020-2023  润新知