zoukankan      html  css  js  c++  java
  • 基础缓存操作类

      1 /// <summary>
      2 /// HttpRuntime Cache读取设置缓存信息封装
      3 /// 使用描述:给缓存赋值使用HttpRuntimeCache.Set(key,value....)等参数(第三个参数可以传递文件的路径(HttpContext.Current.Server.MapPath()))
      4 /// 读取缓存中的值使用JObject jObject=HttpRuntimeCache.Get(key) as JObject,读取到值之后就可以进行一系列判断
      5 /// </summary>
      6 public class CacheExtend
      7 {
      8 /// <summary>
      9 /// 设置缓存时间,配置(从配置文件中读取)
     10 /// </summary>
     11 private const double Seconds = 30*24*60*60;
     12 
     13 /// <summary>
     14 /// 缓存指定对象,设置缓存
     15 /// </summary>
     16 public static bool Set(string key, object value)
     17 {
     18 return Set(key, value, null, DateTime.Now.AddSeconds(Seconds), Cache.NoSlidingExpiration,
     19 CacheItemPriority.Default, null);
     20 }
     21 
     22 /// <summary>
     23 /// 缓存指定对象,设置缓存
     24 /// </summary>
     25 public static bool Set(string key, object value, string path)
     26 {
     27 try
     28 {
     29 var cacheDependency = new CacheDependency(path);
     30 return Set(key, value, cacheDependency);
     31 }
     32 catch
     33 {
     34 return false;
     35 }
     36 }
     37 
     38 /// <summary>
     39 /// 缓存指定对象,设置缓存
     40 /// </summary>
     41 public static bool Set(string key, object value, CacheDependency cacheDependency)
     42 {
     43 return Set(key, value, cacheDependency, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration,
     44 CacheItemPriority.Default, null);
     45 }
     46 
     47 /// <summary>
     48 /// 缓存指定对象,设置缓存
     49 /// </summary>
     50 public static bool Set(string key, object value, double seconds, bool isAbsulute)
     51 {
     52 return Set(key, value, null, (isAbsulute ? DateTime.Now.AddSeconds(seconds) : Cache.NoAbsoluteExpiration),
     53 (isAbsulute ? Cache.NoSlidingExpiration : TimeSpan.FromSeconds(seconds)), CacheItemPriority.Default,
     54 null);
     55 }
     56 
     57 /// <summary>
     58 /// 获取缓存对象
     59 /// </summary>
     60 public static object Get(string key)
     61 {
     62 return GetPrivate(key);
     63 }
     64 
     65 /// <summary>
     66 /// 判断缓存中是否含有缓存该键
     67 /// </summary>
     68 public static bool Exists(string key)
     69 {
     70 return (GetPrivate(key) != null);
     71 }
     72 
     73 /// <summary>
     74 /// 移除缓存对象
     75 /// </summary>
     76 /// <param name="key"></param>
     77 /// <returns></returns>
     78 public static bool Remove(string key)
     79 {
     80 if (string.IsNullOrEmpty(key))
     81 {
     82 return false;
     83 }
     84 HttpRuntime.Cache.Remove(key);
     85 return true;
     86 }
     87 
     88 /// <summary>
     89 /// 移除所有缓存
     90 /// </summary>
     91 /// <returns></returns>
     92 public static bool RemoveAll()
     93 {
     94 IDictionaryEnumerator iDictionaryEnumerator = HttpRuntime.Cache.GetEnumerator();
     95 while (iDictionaryEnumerator.MoveNext())
     96 {
     97 HttpRuntime.Cache.Remove(Convert.ToString(iDictionaryEnumerator.Key));
     98 }
     99 return true;
    100 }
    101 
    102 
    103 /// <summary>
    104 /// 尝试获取缓存,不存在则执行匿名委托
    105 /// </summary>
    106 /// <typeparam name="T"></typeparam>
    107 /// <param name="key"></param>
    108 /// <param name="func"></param>
    109 /// <returns></returns>
    110 public static T TryGet<T>(string key, Func<T> func)
    111 {
    112 if (Exists(key)) return (T) Get(key);
    113 var result = func.Invoke();
    114 Set(key, result);
    115 return result;
    116 }
    117 
    118  
    119 
    120 //------------------------提供给上面方法进行调用-----------------------------------
    121 /// <summary>
    122 /// 设置缓存
    123 /// </summary>
    124 public static bool Set(string key, object value, CacheDependency cacheDependency, DateTime dateTime,
    125 TimeSpan timeSpan, CacheItemPriority cacheItemPriority, CacheItemRemovedCallback cacheItemRemovedCallback)
    126 {
    127 if (string.IsNullOrEmpty(key) || value == null)
    128 {
    129 return false;
    130 }
    131 HttpRuntime.Cache.Insert(key, value, cacheDependency, dateTime, timeSpan, cacheItemPriority,
    132 cacheItemRemovedCallback);
    133 return true;
    134 }
    135 
    136 /// <summary>
    137 /// 获取缓存
    138 /// </summary>
    139 private static object GetPrivate(string key)
    140 {
    141 return string.IsNullOrEmpty(key) ? null : HttpRuntime.Cache.Get(key);
    142 }
    143 }
  • 相关阅读:
    cf1058c 暴力
    cf1058b 点是否在一个矩形里
    cf1058E 思维 前缀处理 位运算
    Codeforces Round #622 (Div. 2)C(单调栈,DP)
    Codeforces Round #623 (Div. 1, based on VK Cup 2019-2020
    Atcoder Beginner Contest 156E(隔板法,组合数学)
    【PAT甲级】1117 Eddington Number (25分)
    【PAT甲级】1116 Come on! Let's C (20分)
    【PAT甲级】1115 Counting Nodes in a BST (30分)(二叉查找树)
    Codeforces Round #621 (Div. 1 + Div. 2)E(二分查找,枚举分界点,容斥原理)
  • 原文地址:https://www.cnblogs.com/creater/p/6321999.html
Copyright © 2011-2022 走看看