• Cashe的使用


    1.CacheHelper
    public class CacheHelper
        {
            public static ObjectCache Cache
            {
                get
                {
                    return MemoryCache.Default;
                }
            }
    
    
            public static bool TryGetCache<T>(string key, ref T value)
            {
                object v = null;
                //Type t = typeof(T);
                bool hit;
                hit = TryGetCacheObject(key, ref v);
                if (hit)
                    value = (T)v;
                return hit;
            }
    
            //public static bool TryGetCache(string key, ref bool value)
            //{
            //    return TryGetCacheStruct(key, ref value);
            //}
    
            //public static bool TryGetCache(string key, ref int value)
            //{
            //    return TryGetCacheStruct(key, ref value);
            //}
    
            public static bool TryGetCacheStruct<T>(string key, ref T value) where T : struct
            {
                object v = null;
                bool hit = TryGetCacheObject(key, ref v);
                if (hit)
                    value = (T)v;
                return hit;
            }
    
            public static bool TryGetCacheObject(string key, ref object value)
            {
                object v = Cache.Get(key);
                bool hit = false;
                if (v == null)
                    hit = false;
                else if (v == DBNull.Value)
                {
                    hit = true;
                    value = null;
                }
                else
                {
                    hit = true;
                    value = v;
                }
                //TraceHelper.Trace("Cache", string.Format("TryGetCache({0}) = {1}", key, hit));
                return hit;
            }
    
    
            public static bool ContainsCache(string key)
            {
                bool hit = Cache.Contains(key);
                //TraceHelper.Trace("Cache", string.Format("ContainsCache({0}) = {1}", key, hit));
                return hit;
            }
    
            public static object GetCache(string key)
            {
                object v = Cache.Get(key);
                if (v == DBNull.Value)
                {
                    return null;
                }
                //TraceHelper.Trace("Cache", string.Format("GetCache({0}) = {1}", key, v == null ? "null" : v.ToString()));
                return v;
            }
    
            public static void SetCache(string key, object value)
            {
                SetCache(key, value, CacheItemPolicy);
            }
    
            public static void SetCache(string key, object value, CacheItemPolicy policy)
            {
                object v = value;
                if (value == null)
                    v = DBNull.Value;
                Cache.Set(key, v, policy);
                //TraceHelper.Trace("Cache", string.Format("SetCache({0}) = {1}", key, value == null ? "null" : value.ToString()));
            }
    
            public static CacheItemPolicy CacheItemPolicy
            {
                get
                {
                    
                    CacheItemPolicy policy = new CacheItemPolicy();
                    policy.SlidingExpiration = new TimeSpan(0, AppConfiguration.CacheSlidingExpirationInMins, 0);
                    return policy;
                }
            }
    
            public static CacheItemPolicy AbsoluteCacheItemPolicy
            {
                get
                {
                    CacheItemPolicy policy = new CacheItemPolicy();
                    policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(AppConfiguration.CacheAbsoluteExpirationInMins);
                    return policy;
                }
            }
    
            public static void ClearCacheByPrefix(string prefix)
            {
                List<string> keys = new List<string>();
                foreach (var c in Cache)
                {
                    if (c.Key.StartsWith(prefix))
                    {
                        keys.Add(c.Key);
                    }
                }
                int count = keys.Count;
                foreach (var key in keys)
                {
                    Cache.Remove(key);
                }
                //TraceHelper.Trace("Cache", string.Format("ClearCacheByPrefix({0}) = {1}", prefix, count));
            }
        }


     

        public class TestKey
        {
            public string Code { get; set; }
            public decimal CodeNo { get; set; }
    
            public override bool Equals(object obj)
            {
                TestKey v = obj as TestKey;
                if (v == null) return false;
    
                return v.Code== this.Code && v.CodeNo== this.CodeNo;
            }
    
            public override int GetHashCode()
            {
                int primeNo = 31;
                return (this.Code.GetHashCode() * primeNo + this.CodeNo.GetHashCode();
            }
        }


     

            public static HashSet<StopPaymentKey> GetAllFromCache()
            {
                string cachekey = "AllTestKeys";
                HashSet<TestKey> set = null;
                if (!CacheHelper.TryGetCache(cachekey, ref set))
                {
                    set= GetAllTestKeys();
                    CacheItemPolicy policy = CacheHelper.AbsoluteCacheItemPolicy;
                    //policy.RemovedCallback = (arg) =>
                    //{
                    //    var newSet = GetAllTestCodes();
                    //    CacheHelper.SetCache(cachekey, newSet, policy);
                    //};
                    CacheHelper.SetCache(cachekey, stoppaymentSet, policy);
                }
                return set;
            }


     

  • 相关阅读:
    97. Interleaving String
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    94. Binary Tree Inorder Traversal
    odoo many2many字段 指定打开的form视图
    docker sentry 配置文件位置
    postgres 计算时差
    postgres 字符操作补位,字符切割
    postgres判断字符串是否为时间,数字
    odoo fields_view_get
  • 原文地址:https://www.cnblogs.com/sui84/p/6777035.html
Copyright © 2020-2023  润新知