/// <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()); }
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); }
public void UpdateContainerBag(string key, IBaseContainerBag containerBag) { if (this.CheckExisted(key)) { var containerItemCollection = Get(key); containerItemCollection[containerBag.Key] = containerBag; _cache.HashSet(key, containerItemCollection.ToHashEntries()); } }
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); } }
public void UpdateContainerBag(string key, IBaseContainerBag containerBag) { if (this.CheckExisted(key)) { var containerItemCollection = Get(key); containerItemCollection[containerBag.Key] = containerBag; Update(key, 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 = Get(key); containerItemCollection[bag.Key] = bag; //因为这里获取的是containerItemCollection引用对象,所以不必再次更新整个containerItemCollection到缓存 } }
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()); }
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); }
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); }
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 }
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 }
/// <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)); }
public void Update(string key, IBaseContainerBag value, bool isFullKey = false) { base.Update(key, value, isFullKey); }
public void InsertToCache(string key, IBaseContainerBag value) { base.InsertToCache(key, value); }
/// <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 containerBag) { object value; if (_cache.TryGet(key,out value)) { var containerItemCollection = (IContainerItemCollection) value; containerItemCollection[containerBag.Key] = containerBag; } }
public virtual void UpdateContainerBag(string key, IBaseContainerBag bag, TimeSpan?expiry = null, bool isFullKey = false) { var baseCacheStrategy = BaseCacheStrategy(); baseCacheStrategy.Update(key, bag, expiry, isFullKey); }
/// <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)); }
/// <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); }
/// <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); }