zhouxujian

using System;
using System.Collections;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;

namespace BoovooCms.CacheService
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 public class BoovooCache
 {
  private static readonly Cache boovoo_cache;
  public static readonly int DayFactor = 17280;
  public static readonly int HourFactor = 720;
  public static readonly int MinuteFactor = 12;  
  private static int Factor = 5;

  public static void ReSetFactor(int cacheFactor)
  {
   Factor = cacheFactor;
  }
  static BoovooCache()
  {
   HttpContext context = HttpContext.Current;
   if(context != null)
   {
    boovoo_cache = context.Cache;
   }
   else
   {
    boovoo_cache = HttpRuntime.Cache;
   }
  }

//  public object this[string key]
//  {
//   get
//   {
//    return _cache[key];
//   }
//   set
//   {
//    _cache[key]=value;
//   }
//  }

  /// <summary>
  /// 清空Cache中的项
  /// </summary>
  public static void Clear()
  {
   IDictionaryEnumerator CacheEnum = boovoo_cache.GetEnumerator();
   while(CacheEnum.MoveNext()) 
   {
    boovoo_cache.Remove(CacheEnum.Key.ToString());
   }

  }
  public static void RemoveByPattern(string pattern)
  {
   IDictionaryEnumerator CacheEnum = boovoo_cache.GetEnumerator();
   Regex regex = new Regex(pattern,RegexOptions.IgnoreCase|RegexOptions.Singleline|RegexOptions.Compiled);
   while(CacheEnum.MoveNext())
   {
    if(regex.IsMatch(CacheEnum.Key.ToString()))
    {
     boovoo_cache.Remove(CacheEnum.Key.ToString());
    }
   }
  }

  /// <summary>
  /// 移除key所指定的Cache项
  /// </summary>
  /// <param name="key"></param>
  public static void Remove(string key)
  {
   boovoo_cache.Remove(key);
  }

  /// <summary>
  /// 将obj加入Cache
  /// </summary>
  /// <param name="key"></param>
  /// <param name="obj"></param>
  public static void Insert(string key, object obj)
  {
   Insert(key,obj,null,1);
  }

  public static void Insert(string key, object obj, CacheDependency dep)
  {
   Insert(key,obj,dep,HourFactor * 12);
  }

  public static void Insert(string key, object obj, int seconds)
  {
   Insert(key,obj,null,seconds);
  }

  public static void Insert(string key, object obj, int seconds, CacheItemPriority priority)
  {
   Insert(key,obj,null,seconds,priority);
  }

  public static void Insert(string key, object obj, CacheDependency dep, int seconds)
  {
   Insert(key,obj,dep,seconds,CacheItemPriority.Normal);
  }

  public static void Insert(string key, object obj, CacheDependency dep, int seconds, CacheItemPriority priority)
  {
   if(obj != null)
   {
    boovoo_cache.Insert(key,obj,dep,DateTime.Now.AddSeconds(Factor * seconds), TimeSpan.Zero,priority,null);
   }

  }

  public static void MicroInsert (string key, object obj, int secondFactor)
  {
   if(obj != null)
   {
    boovoo_cache.Insert(key,obj,null,DateTime.Now.AddSeconds(Factor * secondFactor), TimeSpan.Zero);
   }
  }

  /// <summary>
  /// 将obj加入Cache使用最大缓存时间
  /// </summary>
  /// <param name="key"></param>
  /// <param name="obj"></param>
  public static void Max(string key, object obj)
  {
   Max(key,obj,null);
  }

  public static void Max(string key, object obj, CacheDependency dep)
  {
   if(obj != null)
   {
    boovoo_cache.Insert(key,obj,dep,DateTime.MaxValue,TimeSpan.Zero,CacheItemPriority.AboveNormal,null);
   }
  }

  public static object Get(string key)
  {
   return boovoo_cache[key];
  }
 }
}

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
  • 2021-06-15
  • 2022-02-25
猜你喜欢
  • 2021-10-07
  • 2021-10-02
  • 2021-07-06
  • 2022-01-08
  • 2021-06-15
  • 2021-04-12
相关资源
相似解决方案