zoukankan      html  css  js  c++  java
  • 自写缓存类

    public class MyCache
    {
        /// <summary>
        /// 插入一个缓存
        /// </summary>
        /// <param name="name">缓存键</param>
        /// <param name="value">缓存值</param>
        /// <param name="isAbsoulute">是否使用绝对过期,是则为true否则为false</param>
        /// <param name="isOverride">如果缓存存在,是否覆盖缓存值</param>
        /// <param name="absoluteDate">绝对过期时间</param>
        /// <param name="spacing">相对过期的时间间隔</param>
        /// <param name="dep">缓存依赖</param>
        /// <param name="removeddCallback">缓存被移除时调用的委托</param>
        /// <param name="priority">缓存优先级</param>
        public static void Insert(string name, object value, bool isAbsoulute, bool isOverride, DateTime absoluteDate, TimeSpan spacing, CacheDependency dep, CacheItemRemovedCallback removeddCallback, CacheItemPriority priority)
        {

            Cache cache = HttpContext.Current.Cache;
            //如果此键的缓存已存在
            if (cache[name] != null)
            {
                //如果覆盖缓存值
                if (isOverride)
                {
                    cache.Remove(name);
                    InsertInternal(name, value, isAbsoulute, absoluteDate, spacing, dep, removeddCallback, priority);
                }
                else
                {
                    return;
                }
            }
            InsertInternal(name, value, isAbsoulute, absoluteDate, spacing, dep, removeddCallback, priority);
        }

        /// <summary>
        /// 根据键名,获取缓存,如果缓存不存在,则调用返回缓存值的委托
        /// </summary>
        public static object GetCache(string name, Func<object> func, bool isAbsoulute, bool isOverride, DateTime absoluteDate, TimeSpan spacing, CacheDependency dep, CacheItemRemovedCallback removeddCallback, CacheItemPriority priority)
        {
            Cache cache = HttpContext.Current.Cache;
            if (cache[name] != null)
            {
                return cache[name];
            }
            else
            {
                object obj = func();
                Insert(name, obj, isAbsoulute, isOverride, absoluteDate, spacing, dep, removeddCallback, priority);
                return obj;
            }
        }

        /// <summary>
        /// 内部方法
        /// </summary>        
        static void InsertInternal(string name, object value, bool isAbsoulute, DateTime absoluteDate, TimeSpan spacing, CacheDependency dep, CacheItemRemovedCallback callback, CacheItemPriority priority)
        {
            Cache cache = HttpContext.Current.Cache;
            if (isAbsoulute)
            {
                cache.Insert(name, value, dep, absoluteDate, TimeSpan.Zero, priority, callback);
            }
            else
            {
                cache.Insert(name, value, dep, DateTime.MaxValue, spacing, priority, callback);
            }
        }
    }
  • 相关阅读:
    java中将一个文件夹下所有的文件压缩成一个文件
    nodejs 指定全局安装路径和缓存路径
    webstrom 2019.2激活教程+激活工具
    CoreOnLineTransactionService.java
    CoreOnLineTransactionMapper.xml
    短信长度判断:判断是长短信
    sxnx-sms山西农信错误信息+处理方法
    Cannot format given Object as a Date
    cpu个数、核数、线程数、Java多线程关系的理解+物理cpu数和cpu核数和逻辑cpu数和vcpu区别
    如何判断短信内容是否是长短信??
  • 原文地址:https://www.cnblogs.com/mxw09/p/1836199.html
Copyright © 2011-2022 走看看