zoukankan      html  css  js  c++  java
  • 自定义缓存类扩展类

    using System;
    using System.Runtime.Caching;
    
    namespace MemoryCacheHelpSpace
    {
        public static class MemoryCacheHelp
        {
            private static Object m_objLocker = new object();
    
            public static T GetCacheItem<T>(String strKey,
                Func<T> cachePopulate,
                TimeSpan? slidingExpiration = null,
                DateTime? absoluteExpiration = null)
            {
                if (string.IsNullOrWhiteSpace(strKey)) throw new ArgumentException("无效键");
                if (cachePopulate == null) throw new ArgumentException("委托不能为null");
                if (slidingExpiration == null && absoluteExpiration == null) throw new ArgumentException("间隔或时间至少有一个");
                if (MemoryCache.Default[strKey] == null)
                {
                    lock (m_objLocker)
                    {
                        var item = new CacheItem(strKey, cachePopulate());
                        var policy = CreatePolicy(slidingExpiration, absoluteExpiration);
                        MemoryCache.Default.Add(item, policy);
                    }
                }
                return (T)MemoryCache.Default[strKey];
            }
    
            public static void CacheRemove(string strKey)
            {
                if (string.IsNullOrWhiteSpace(strKey)) throw new ArgumentException("无效键");
                if (MemoryCache.Default[strKey] != null)
                {
                    lock (m_objLocker)
                    {
                        MemoryCache.Default.Remove(strKey);
                    }
                }
            }
    
            private static CacheItemPolicy CreatePolicy(TimeSpan? slidingExpiration, DateTime? absoluteExpiration)
            {
                var policy = new CacheItemPolicy();
                if (absoluteExpiration.HasValue)
                {
                    policy.AbsoluteExpiration = absoluteExpiration.Value;
                }
                else if (slidingExpiration.HasValue)
                {
                    policy.SlidingExpiration = slidingExpiration.Value;
                }
                policy.Priority = CacheItemPriority.Default;
                return policy;
            }
        }
    }
  • 相关阅读:
    oracle函数查询数据字典
    股票市场不是年轻人应该去的地方
    惊蟄
    大学问
    教条示龙场诸生
    生成器表达式
    三次锁定(文件加强版)
    文件的增删改查
    Python试题(1)
    Python入门(1)
  • 原文地址:https://www.cnblogs.com/itsone/p/13304338.html
Copyright © 2011-2022 走看看