/// <summary>
        /// 【异步方法】更新 ContainerBag
        /// </summary>
        /// <param name="key"></param>
        /// <param name="bag"></param>
        /// <param name="expiry"></param>
        /// <param name="isFullKey"></param>
        public virtual async Task UpdateContainerBagAsync(string key, IBaseContainerBag bag, TimeSpan?expiry = null, bool isFullKey = false)
        {
            var baseCacheStrategy = BaseCacheStrategy();

            bag.CacheTime = SystemTime.Now;//更新缓存时间(上一级 Container 通常已经有设置,这里是为了小粒度确保一下)
            await baseCacheStrategy.UpdateAsync(key, bag, expiry, isFullKey).ConfigureAwait(false);
        }
        public void Update(string key, IBaseContainerBag value)
        {
            //_cache[key] = value;

            //dynamic item = GetItem(key);

            if (value is BaseContainerBag <AccessTokenResult> )
            {
                var obj = (BaseContainerBag <AccessTokenResult>)value;

                SqlParameter[] parameters = new SqlParameter[] {
                    new SqlParameter("WeixinCorpId", obj.CorpId),
                    new SqlParameter("WeixinCorpSecret", obj.CorpSecret),
                    new SqlParameter("AccessTokenExpireTime", obj.ExpireTime),
                    new SqlParameter("AccessToken", ((AccessTokenBag)obj).TokenResult.access_token)
                };

                ((DbContext)_unitOfWork).Database.ExecuteSqlCommand("update SysWechatConfig set AccessToken=@AccessToken,AccessTokenExpireTime=@AccessTokenExpireTime  where WeixinCorpId=@WeixinCorpId and WeixinCorpSecret=@WeixinCorpSecret",
                                                                    parameters);
            }
            else
            {
                var obj = (BaseContainerBag <JsApiTicketResult>)value;

                SqlParameter[] parameters = new SqlParameter[] {
                    new SqlParameter("WeixinCorpId", obj.CorpId),
                    new SqlParameter("WeixinCorpSecret", obj.CorpSecret),
                    new SqlParameter("TicketTokenExpireTime", obj.ExpireTime),
                    new SqlParameter("TicketToken", ((JsApiTicketBag)obj).TokenResult.ticket)
                };

                ((DbContext)_unitOfWork).Database.ExecuteSqlCommand("update SysWechatConfig set TicketToken=@TicketToken,TicketTokenExpireTime=@TicketTokenExpireTime  where WeixinCorpId=@WeixinCorpId and WeixinCorpSecret=@WeixinCorpSecret",
                                                                    parameters);
            }
        }
        public virtual void UpdateContainerBag(string key, IBaseContainerBag bag, TimeSpan?expiry = null, bool isFullKey = false)
        {
            var baseCacheStrategy = BaseCacheStrategy();

            bag.CacheTime = SystemTime.Now;//更新缓存时间(上一级 Container 通常已经有设置,这里是为了小粒度确保一下)
            baseCacheStrategy.Update(key, bag, expiry, isFullKey);
        }
        public void Update(string key, IBaseContainerBag value, bool isFullKey = false)
        {
            var cacheKey = GetFinalKey(key, isFullKey);

            //value.Key = cacheKey;//储存最终的键
            _cache.StringSet(cacheKey, value.Serialize());
        }
Beispiel #5
0
 public void UpdateContainerBag(string key, IBaseContainerBag containerBag, bool isFullKey = false)
 {
     if (this.CheckExisted(key, isFullKey))
     {
         Update(key, containerBag, isFullKey);
     }
 }
 public void UpdateContainerBag(string key, IBaseContainerBag bag)
 {
     if (_cache.ContainsKey(key))
     {
         var containerItemCollection = _cache[key];
         containerItemCollection[bag.Key] = bag;
     }
 }
 public void InsertToCache(string key, IBaseContainerBag value)
 {
     if (key == null || value == null)
     {
         return;
     }
     _cache[key] = value;
 }
        public void InsertToCache(string key, IBaseContainerBag value)//TODO:添加Timeout参数
        {
            if (string.IsNullOrEmpty(key) || value == null)
            {
                return;
            }

            base.InsertToCache(key, value);
        }
Beispiel #9
0
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            if (this.CheckExisted(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[containerBag.Key] = containerBag;

                _cache.HashSet(key, containerItemCollection.ToHashEntries());
            }
        }
Beispiel #10
0
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag, bool isFullKey = false)
        {
            var    cacheKey = GetFinalKey(key, isFullKey);
            object value;

            if (_cache.TryGet(cacheKey, out value))
            {
                Update(cacheKey, containerBag, true);
            }
        }
        public override void UpdateContainerBag(string key, IBaseContainerBag containerBag, TimeSpan?expiry = null, bool isFullKey = false)
        {
            var    baseCacheStrategy = BaseCacheStrategy();
            object value;

            if ((baseCacheStrategy as MemcachedObjectCacheStrategy).TryGet(key, out value))
            {
                baseCacheStrategy.Update(key, containerBag, expiry, isFullKey);
            }
        }
Beispiel #12
0
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            if (this.CheckExisted(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[containerBag.Key] = containerBag;

                Update(key, containerItemCollection);
            }
        }
Beispiel #13
0
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            object value;

            if (_cache.TryGet(key, out value))
            {
                var containerItemCollection = (IContainerItemCollection)value;
                containerItemCollection[containerBag.Key] = containerBag;
            }
        }
Beispiel #14
0
        public void UpdateContainerBag(string key, IBaseContainerBag bag)
        {
            if (_cache.ContainsKey(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[bag.Key] = bag;

                //因为这里获取的是containerItemCollection引用对象,所以不必再次更新整个containerItemCollection到缓存
            }
        }
Beispiel #15
0
        public void Update(string key, IBaseContainerBag value, bool isFullKey = false)
        {
            //var cacheKey = GetFinalKey(key, isFullKey);
            var hashKeyAndField = this.GetHashKeyAndField(key);

            //value.Key = cacheKey;//储存最终的键

            //_cache.StringSet(cacheKey, value.Serialize());

            _cache.HashSet(hashKeyAndField.Key, hashKeyAndField.Field, value.Serialize());
        }
Beispiel #16
0
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            if (this.CheckExisted(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[containerBag.Key] = containerBag;

                var hash = GetHash();
                _cache.SetEntryInHash(hash, key, containerItemCollection);
            }
        }
        public void InsertToCache(string key, IBaseContainerBag value)
        {
            if (key == null || value == null)
            {
                return;
            }
            //  _cache[key] = value;

            // aa.Update(value);

            // InsertItem(value);
        }
Beispiel #18
0
        public void InsertToCache(string key, IBaseContainerBag value)//TODO:添加Timeout参数
        {
            if (string.IsNullOrEmpty(key) || value == null)
            {
                return;
            }

            base.InsertToCache(key, value);
#if DEBUG
            var cacheKey = GetFinalKey(key);
            value = _cache.Get(cacheKey) as IBaseContainerBag;
#endif
        }
        public override async Task UpdateContainerBagAsync(string key, IBaseContainerBag bag, TimeSpan?expiry = null, bool isFullKey = false)
        {
            var    baseCacheStrategy = BaseCacheStrategy();
            object value;

            if ((baseCacheStrategy as MemcachedObjectCacheStrategy).TryGet(key, out value))
            {
                await baseCacheStrategy.UpdateAsync(key, bag, expiry, isFullKey);
            }

            //Memcached 组件没有提供对应 TryGet() 的异步方法,所以也可以考虑使用 Task.Factory 完成异步
            //await Task.Factory.StartNew(() => UpdateContainerBag(key, bag, expiry, isFullKey)).ConfigureAwait(false);
        }
Beispiel #20
0
        public void InsertToCache(string key, IBaseContainerBag value)//TODO:添加Timeout参数
        {
            if (string.IsNullOrEmpty(key) || value == null)
            {
                return;
            }

            var cacheKey = GetFinalKey(key);

            //TODO:加了绝对过期时间就会立即失效(再次获取后为null),memcache低版本的bug
            _cache.Store(StoreMode.Set, cacheKey, value, DateTime.Now.AddDays(1));

#if DEBUG
            value = _cache.Get(cacheKey) as IBaseContainerBag;
#endif
        }
        public void InsertToCache(string key, IBaseContainerBag value)
        {
            if (string.IsNullOrEmpty(key) || value == null)
            {
                return;
            }

            var cacheKey = GetFinalKey(key);

            //if (value is IDictionary)
            //{
            //    //Dictionary类型
            //}

            _cache.StringSet(cacheKey, value.Serialize());

#if DEBUG
            var value1 = _cache.StringGet(cacheKey);//正常情况下可以得到 //_cache.GetValue(cacheKey);
#endif
        }
Beispiel #22
0
        public void InsertToCache(string key, IBaseContainerBag value)
        {
            if (string.IsNullOrEmpty(key) || value == null)
            {
                return;
            }

            //var cacheKey = GetFinalKey(key);
            var hashKeyAndField = this.GetHashKeyAndField(key);


            //if (value is IDictionary)
            //{
            //    //Dictionary类型
            //}

            //_cache.StringSet(cacheKey, value.Serialize());
            _cache.HashSet(hashKeyAndField.Key, hashKeyAndField.Field, value.Serialize());
#if DEBUG
            var value1 = _cache.HashGet(hashKeyAndField.Key, hashKeyAndField.Field);//正常情况下可以得到 //_cache.GetValue(cacheKey);
#endif
        }
Beispiel #23
0
 /// <summary>
 /// 获取ContainerBag缓存Key,包含命名空间(形如:Container:Wl.Wish.Containers.SomethingBag:5f31b4a6fd2c332)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="bag"></param>
 /// <returns></returns>
 public static string GetItemCacheKey(IBaseContainerBag bag)
 {
     return(GetItemCacheKey(bag, bag.Key));
 }
Beispiel #24
0
 public void Update(string key, IBaseContainerBag value, bool isFullKey = false)
 {
     base.Update(key, value, isFullKey);
 }
Beispiel #25
0
 public void InsertToCache(string key, IBaseContainerBag value)
 {
     base.InsertToCache(key, value);
 }
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            if (this.CheckExisted(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[containerBag.Key] = containerBag;

                Update(key, containerItemCollection);
            }
        }
Beispiel #27
0
 /// <summary>
 /// 获取ContainerBag缓存Key,包含命名空间(形如:Container:Senparc.Weixin.MP.Containers.AccessTokenBag:wx669ef95216eef885)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="bag"></param>
 /// <param name="shortKey"></param>
 /// <returns></returns>
 public static string GetItemCacheKey(IBaseContainerBag bag, string shortKey)// where T : IBaseContainerBag
 {
     return GetItemCacheKey(bag.GetType(), shortKey);
 }
 public void UpdateContainerBag(string key, IBaseContainerBag bag, bool isFullKey = false)
 {
     Update(key, bag, isFullKey);
 }
        public void Update(string key, IBaseContainerBag value, bool isFullKey = false)
        {
            var cacheKey = GetFinalKey(key, isFullKey);

            _cache[cacheKey] = value;
        }
        public void UpdateContainerBag(string key, IBaseContainerBag bag)
        {
            if (_cache.ContainsKey(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[bag.Key] = bag;

                //因为这里获取的是containerItemCollection引用对象,所以不必再次更新整个containerItemCollection到缓存
            }
        }
 public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
 {
     object value;
     if (_cache.TryGet(key,out value))
     {
         var containerItemCollection = (IContainerItemCollection) value;
         containerItemCollection[containerBag.Key] = containerBag;
     }
 }
 public void UpdateContainerBag(string key, IBaseContainerBag bag)
 {
     if (_cache.ContainsKey(key))
     {
         var containerItemCollection = _cache[key];
         containerItemCollection[bag.Key] = bag;
     }
 }
        public virtual void UpdateContainerBag(string key, IBaseContainerBag bag, TimeSpan?expiry = null, bool isFullKey = false)
        {
            var baseCacheStrategy = BaseCacheStrategy();

            baseCacheStrategy.Update(key, bag, expiry, isFullKey);
        }
Beispiel #34
0
 /// <summary>
 /// 获取ContainerBag缓存Key,包含命名空间(形如:Container:Wl.Wish.Containers.SomethingBag:5f31b4a6fd2c332)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="bag"></param>
 /// <param name="shortKey"></param>
 /// <returns></returns>
 public static string GetItemCacheKey(IBaseContainerBag bag, string shortKey)// where T : IBaseContainerBag
 {
     return(GetItemCacheKey(bag.GetType(), shortKey));
 }
Beispiel #35
0
 /// <summary>
 /// 获取ContainerBag缓存Key,包含命名空间(形如:Container:Senparc.Weixin.MP.Containers.AccessTokenBag:wx669ef95216eef885)
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="bag"></param>
 /// <returns></returns>
 public static string GetItemCacheKey(IBaseContainerBag bag)
 {
     return GetItemCacheKey(bag, bag.Key);
 }
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            if (this.CheckExisted(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[containerBag.Key] = containerBag;

                _cache.HashSet(key, containerItemCollection.ToHashEntries());
            }
        }
 /// <summary>
 /// 【异步方法】更新 ContainerBag
 /// </summary>
 /// <param name="key"></param>
 /// <param name="bag"></param>
 /// <param name="expiry"></param>
 /// <param name="isFullKey"></param>
 public virtual async Task UpdateContainerBagAsync(string key, IBaseContainerBag bag, TimeSpan?expiry = null, bool isFullKey = false)
 {
     var baseCacheStrategy = BaseCacheStrategy();
     await baseCacheStrategy.UpdateAsync(key, bag, expiry, isFullKey);
 }
        public void UpdateContainerBag(string key, IBaseContainerBag containerBag)
        {
            if (this.CheckExisted(key))
            {
                var containerItemCollection = Get(key);
                containerItemCollection[containerBag.Key] = containerBag;

                var hash = GetHash();
                _cache.SetEntryInHash(hash, key, containerItemCollection);
            }
        }