/// <summary> /// 从容器中移除请求对应的标识 /// </summary> /// <param name="request"></param> /// <returns></returns> public bool Remove(ServiceRequest request) { string key = GetKeyString(request); Cache.Remove(key); ResetIdentityKeyList(); IdentityKeyList.Remove(key);//从全局缓存移除 Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList); return(true); }
public void Add(ServiceRequest request, ServiceIdentity identity) { string key = GetKeyString(request); identity.Key = key; //插入到全局缓存 ResetIdentityKeyList(); IdentityKeyList.Add(key); Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList); Cache.Insert <ServiceIdentity>(key, identity, new System.Runtime.Caching.CacheItemPolicy() { SlidingExpiration = identity.Expire }); }
/// <summary> /// 移除指定的标识 /// </summary> /// <param name="identity"></param> /// <returns></returns> public bool Remove(ServiceIdentity identity) { ServiceIdentity item = this.Cache.Get <ServiceIdentity>(identity.Key); if (item != null && item.Key == identity.Key) { this.Cache.Remove(identity.Key); ResetIdentityKeyList(); IdentityKeyList.Remove(identity.Key);//从全局缓存移除 Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList); return(true); } return(false); }
/// <summary> /// 根据已有的标识,寻找容器中对应的标识对象 /// </summary> /// <param name="identity"></param> /// <returns></returns> public ServiceIdentity Find(ServiceIdentity identity) { List <string> keyList = this.IdentityKeyList; foreach (string key in keyList.ToArray()) { ServiceIdentity item = this.Cache.Get <ServiceIdentity>(key); if (item != null) { if (item.Id == identity.Id && item.Name == identity.Name) { return(item); } } else { //从全局缓存移除 ResetIdentityKeyList(); IdentityKeyList.Remove(key); Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList); } } return(null); }