一个缓存的类 包含了缓存的增删改查
 public class BSCache
    {
        ///<summary>
        /// 插入缓存
        /// 过期后将不能被访问到。如果缓存中有同样的对象将覆盖原有的缓存。
        ///</summary>
        /// <param name="key">标识</param>
        /// <param name="obj">对象</param>
        /// <param name="days">过期时间 单位(天)</param>
        /// <param name="cip">优先级 可选参数,调用的时候可以忽略这个参数  当内存不足时会优先清除级别低的缓存</param>
        /// <returns>返回成功(true)或者失败(false)</returns>
        public static bool Insert(string key, object obj, int days, CacheItemPriority cip = CacheItemPriority.Default)
        {    //                           键          值       过期时间               
            if (key != null && !key.Equals("") && obj != null)
            {
                CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
                //                       键    值  依赖项    过期时间                         可调过期时间                              优先级别  清除时调用的委托
                HttpRuntime.Cache.Insert(key, obj, null, System.DateTime.Now.AddDays(days),System.Web.Caching.Cache.NoSlidingExpiration, cip,callBack);
                //可调过期时间 例如设置10分钟 这访问后10分钟若无访问则过期
                //依赖性 可指定一个文件 方法  值  数据库中的数据 等作为依赖项  当这个依赖项发生改变时该缓存过期
                //委托可在清除时调用的方法重新缓存     当内存不足时会优先清除优先级低的缓存对象
                return true;
            }
            else
            {
                return false;
            }
        }
        ///<summary>
        /// 插入缓存
        /// 过期后将不能被访问到。如果缓存中有同样的对象将覆盖原有的缓存。
        ///</summary>
        /// <param name="key">标识</param>
        /// <param name="obj">对象</param>
        /// <param name="minutes">过期时间 单位(分钟)</param>
        /// <param name="cip">优先级</param>
        /// <returns>返回成功(true)或者失败(false)</returns>
        public static bool Insert(string key, object obj, int minutes,CacheItemRemovedCallback crc, CacheItemPriority cip = CacheItemPriority.Default)
        {
            if (key != null && !key.Equals("") && obj != null)
            {
                if (crc == null)
                {
                    HttpRuntime.Cache.Insert(key, obj, null, System.DateTime.Now.AddMinutes(minutes), System.Web.Caching.Cache.NoSlidingExpiration);
                }
                else
                {
                    HttpRuntime.Cache.Insert(key, obj, null, System.DateTime.Now.AddMinutes(minutes), System.Web.Caching.Cache.NoSlidingExpiration, cip, crc);
                }
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 判断缓存是否还存在
        /// 如果缓存过期将视为不存在。
        /// </summary>
        /// <param name="key">标识</param>
        /// <returns>存在或者不存在</returns>
        public static bool ExistCache(string key)
        {
            if (key != null && !key.Trim().Equals(""))
            {
                if (HttpRuntime.Cache[key] != null)
                {
                    return true;
                }
            }
            return false; 
        }
        /// <summary>
        /// 获得缓存
        /// </summary>
        /// <param name="key">标识</param>
        /// <returns>缓存对象</returns>
        public static object GetCache(string key)
        {
            object obj = null;
            if (key != null && !key.Trim().Equals(""))
            {
                if (HttpRuntime.Cache[key] != null)
                {
                    obj = HttpRuntime.Cache[key];
                }
            }
            return obj;
        }
        /// <summary>
        /// 移除缓存对象
        /// </summary>
        /// <param name="key">key</param>
        /// <returns>返回移除成功(True)</returns>
        public static bool RemoveCache(string key)
        {
            if (key != null && !key.Trim().Equals(""))
            {
                if (HttpRuntime.Cache[key] != null)
                {
                    HttpRuntime.Cache.Remove(key);
                }
            }
            return true;
        }
        /// <summary>
        /// 此方法在值失效之前调用,可以用于在失效之前更新数据库,或从数据库重新获取数据
        /// </summary>
        /// <param name="key">key</param>
        /// <param name="obj">对象</param>
        /// <param name="reason">移除的原因</param>
        private static void onRemove(string key, object obj, CacheItemRemovedReason reason)
        {
            string key2 = key;
            object obj2 = obj;
            //CacheItemRemovedReason crr = reason;//移除或过期
        }
        /// <summary>
        /// 获得基站缓存值
        /// </summary>
        /// <param name="keys">缓存名称(基站标识)</param>
        /// <returns></returns>
        public static List<ArrayList> Get(string[] keys)
        {
            List<ArrayList> al = new List<ArrayList>();
            if (keys != null)
            {
                foreach (string item in keys)
                {
                    object obj = GetCache(item);//获得缓存对象
                    if (obj != null)
                    {
                        try
                        {
                            al.Add((ArrayList)obj);
                        }
                        catch { }
                    }
                }
            }
            return al;
        }
    }
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号