コード例 #1
0
 /// <summary>
 /// 获取value
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public override bool TryGetValue <T>(string key, out T value)
 {
     try
     {
         T temp = default(T);
         CacheKeyMapDescriptor cacheKeyMap = EnsureKeyExist(key);
         OnOperating("开始尝试获取值:starting:key:" + key + ",cacheId:" + cacheKeyMap);
         if (cacheKeyMap == null)
         {
             value = default(T);
             return(false);
         }
         MongoDBCacheEntity entity = GetMongoDBEntity(cacheKeyMap);
         OnOperating("尝试获取值结束:end:key:" + key + ",cacheId:" + cacheKeyMap.CacheId + ",result:" + JsonConvert.SerializeObject(entity));
         value = default(T);
         value = JsonConvert.DeserializeObject <T>(entity.CacheValue);
         return(true);
     }
     catch (Exception ex)
     {
         OnOperating("尝试获取值异常:exception:key:" + key + ",excption:" + JsonConvert.SerializeObject(ex));
         value = default(T);
         return(false);
     }
 }
コード例 #2
0
 /// <summary>
 /// 获取value
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public override object GetValue(string key)
 {
     try
     {
         CacheKeyMapDescriptor cacheKeyMap = EnsureKeyExist(key);
         OnOperating("开始获取value:starting:key:" + key + ",cacheId:" + cacheKeyMap.CacheId);
         if (cacheKeyMap == null)
         {
             return(null);
         }
         MongoDBCacheEntity entity = GetMongoDBEntity(cacheKeyMap);
         if (entity != null)
         {
             OnOperating("获取value成功:end-->:key:" + key + ",cacheId:" + cacheKeyMap.CacheId + ",value:" + entity.CacheValue);
             return(entity.CacheValue);
         }
         OnOperating("获取value失败:未找到key:" + key + "对应的值");
         return(null);
     }
     catch (Exception ex)
     {
         OnOperating("获取value异常:" + JsonConvert.SerializeObject(ex) + "");
         return(null);
     }
 }
コード例 #3
0
        ///// <summary>
        /////设置value
        ///// </summary>
        ///// <typeparam name="T"></typeparam>
        ///// <param name="key"></param>
        ///// <param name="value"></param>
        ///// <param name="expireDate"></param>
        //private override bool SetValue<T>(string key, T value, DateTime expireDate)
        //{
        //    try
        //    {
        //        string cacheId = CacheIdGeneratorManger.Instance.GenerateCacheId();
        //        OnOperating("开始写入值:starting:key:" + key + ",cacheId:" + cacheId + ",value:" + JsonConvert.SerializeObject(value) + ",expireDate:" + expireDate);
        //        MongoDBCacheEntity cache = new MongoDBCacheEntity();
        //        cache.ApplicationName = this.pApplicationName;
        //        cache.CacheId = cacheId;
        //        cache.Created = DateTime.Now;
        //        cache.CacheKey = key;
        //        cache.ExpireDate = expireDate;
        //        cache.CacheSta = CacheStatus.Effective;
        //        cache.CacheValue = JsonConvert.SerializeObject(value);

        //        MongoCollection<MongoDBCacheEntity> collection = DistributedCacheHelper.GetMongoDBCollection(cacheId);
        //        if (collection != null)
        //        {
        //            try
        //            {
        //                var query = Query.And(Query.EQ("CacheKey", key));
        //                collection.Remove(query);
        //            }
        //            catch(Exception ex)
        //            { }
        //            WriteConcernResult res = collection.Save(cache);
        //            OnOperating("写入完成end:key:" + key + ",cacheId:" + cacheId + ",result:" + res.Ok + "," + res.ErrorMessage);
        //            if (res.Ok)//成功后
        //            {

        //                CacheKeyMapManger.Instance.AddCacheKeyMap(key, cacheId, expireDate);
        //                return true;
        //            }
        //        }
        //        return false;
        //    }
        //    catch(Exception ex)
        //    {
        //        OnOperating("写入Excption:key:" + key +  ",exception:" + JsonConvert.SerializeObject(ex));
        //        return false;
        //    }
        //}


        /// <summary>
        /// 设置缓存
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="cacheLimit"></param>
        /// <returns></returns>
        public override bool SetValue <T>(string key, T value, Cachelimit cacheLimit, DateTime?expireDate)
        {
            try
            {
                string cacheId = CacheIdGeneratorManger.Instance.GenerateCacheId();
                OnOperating("开始写入值:starting:key:" + key + ",cacheId:" + cacheId + ",value:" + JsonConvert.SerializeObject(value) + ",cacheLimit:" + cacheLimit.ToString());
                MongoDBCacheEntity cache = new MongoDBCacheEntity();
                cache.ApplicationName = this.pApplicationName;
                cache.CacheId         = cacheId;
                cache.Created         = DateTime.Now;
                cache.CacheKey        = key;
                cache.ExpireDate      = cacheLimit == Cachelimit.Forever ? Convert.ToDateTime("2099-12-30") : (cacheLimit == Cachelimit.CurrentDay ? Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59") : Convert.ToDateTime(expireDate));
                cache.CacheSta        = CacheStatus.Effective;


                cache.CacheValue = JsonConvert.SerializeObject(value);
                if (cacheLimit == Cachelimit.ByExpireDate)
                {
                }
                MongoCollection <MongoDBCacheEntity> collection = DistributedCacheHelper.GetMongoDBCollection(cacheId, cacheLimit);
                if (collection != null)
                {
                    try
                    {
                        var query = Query.And(Query.EQ("CacheKey", key));
                        collection.Remove(query);
                    }
                    catch (Exception ex)
                    { }
                    WriteConcernResult res      = collection.Save(cache);
                    TimeSpan           timespan = cache.ExpireDate.Subtract(DateTime.Now);
                    if (cacheLimit != Cachelimit.Forever)
                    {
                        if (!collection.IndexExists(new IndexKeysBuilder().Ascending("ExpireDate")))
                        {
                            collection.EnsureIndex(new IndexKeysBuilder().Ascending("ExpireDate"), IndexOptions.SetTimeToLive(timespan));
                        }
                    }


                    OnOperating("写入完成end:key:" + key + ",cacheId:" + cacheId + ",result:" + res.Ok + "," + res.ErrorMessage);
                    if (res.Ok)//成功后
                    {
                        CacheKeyMapManger.Instance.AddCacheKeyMap(key, cacheId, expireDate, cacheLimit);
                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception ex)
            {
                OnOperating("写入Excption:key:" + key + ",exception:" + JsonConvert.SerializeObject(ex));
                return(false);
            }
        }