示例#1
0
 public CacheType(ExpiredTimeType type, int validTime)
 {
     this.mTables = new Hashtable(50000);
     switch (type)
     {
     case ExpiredTimeType.D:
         this.mTimeout = new TimeSpan(validTime, 0, 0, 0);
         return;
     case ExpiredTimeType.H:
         this.mTimeout = new TimeSpan(validTime, 0, 0);
         return;
     case ExpiredTimeType.M:
         this.mTimeout = new TimeSpan(0, validTime, 0);
         return;
     default:
         this.mTimeout = new TimeSpan(1, 0, 0, 0);
         return;
     }
 }
示例#2
0
 public CacheLayer(int count, ExpiredTimeType type, int validTime, int upgradeHit)
 {
     this.mTables = new Hashtable(count);
     this.mCount = count;
     switch (type)
     {
     case ExpiredTimeType.D:
         this.mTimeout = new TimeSpan(validTime, 0, 0, 0);
         break;
     case ExpiredTimeType.H:
         this.mTimeout = new TimeSpan(validTime, 0, 0);
         break;
     case ExpiredTimeType.M:
         this.mTimeout = new TimeSpan(0, validTime, 0);
         break;
     default:
         this.mTimeout = new TimeSpan(1, 0, 0, 0);
         break;
     }
     this.UpgradeHit = upgradeHit;
 }
示例#3
0
        /// <summary>
        /// 添加,已存在则更新缓存
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="expiredTime">超期时间</param>
        /// <param name="expiredTimeType">超期类型</param>
        /// <param name="changeToken">超期自定义ChangeToken,可用以自定义条件和回调</param>
        /// <returns></returns>
        public void Set(string key, object value, TimeSpan expiredTime = default(TimeSpan), ExpiredTimeType expiredTimeType = ExpiredTimeType.Absolute, IChangeToken changeToken = null)
        {
            //设置默认超时时间
            if (expiredTime == default(TimeSpan))
            {
                expiredTime = TimeSpan.FromMinutes(20);
            }
            object obj;
            var    isExist = _memoryCache.TryGetValue(key, out obj);

            if (!isExist)
            {
                _memoryCache.GetOrCreate(key, v =>//幻读?
                {
                    switch (expiredTimeType)
                    {
                    case ExpiredTimeType.Absolute:
                        v.SetAbsoluteExpiration(expiredTime);
                        break;

                    case ExpiredTimeType.Sliding:
                        v.SetSlidingExpiration(expiredTime);
                        break;

                    case ExpiredTimeType.Custom:
                        v.AddExpirationToken(changeToken);
                        break;

                    default:
                        break;
                    }
                    return(value);
                });
            }
            else
            {
                switch (expiredTimeType)
                {
                case ExpiredTimeType.Absolute:
                    _memoryCache.Set(key, value, DateTime.UtcNow.Add(expiredTime));
                    break;

                case ExpiredTimeType.Sliding:
                    _memoryCache.Set(key, value, expiredTime);
                    break;

                case ExpiredTimeType.Custom:
                    _memoryCache.Set(key, value, changeToken);
                    break;

                default:
                    break;
                }
            }
        }
示例#4
0
        /// <summary>
        /// 添加,已存在则抛错
        /// </summary>
        /// <param name="key">缓存key</param>
        /// <param name="value">缓存value</param>
        /// <param name="expiredTime">超期时间</param>
        /// <param name="expiredTimeType">超期类型</param>
        /// <param name="changeToken">超期自定义ChangeToken,可用以自定义条件和回调</param>
        /// <returns></returns>
        public void Add(string key, object value, TimeSpan expiredTime = default(TimeSpan), ExpiredTimeType expiredTimeType = ExpiredTimeType.None, IChangeToken changeToken = null)
        {
            object obj;
            var    isExist = _memoryCache.TryGetValue(key, out obj);

            if (isExist)
            {
                throw new Exception("Cache contains this key!");
            }
            this.Set(key, value, expiredTime, expiredTimeType, changeToken);
        }