public void ResetExpire() { if (!RedisConfig.UseRedis) { return; } using (var client = RedisClientManager.GetClient()) { client.ExpireEntryIn(RedisKey, TimeSpan.FromMinutes(RedisConfig.TimeOut)); } }
/// <summary> /// 判断session项是否存在 /// </summary> /// <param name="key"></param> /// <returns></returns> public bool Exists(string key) { if (!RedisConfig.UseRedis) { return(HttpContext.Current.Session[key] != null); } using (var client = RedisClientManager.GetClient()) { return(client.HashContainsEntry(RedisKey, key)); } }
/// <summary> /// 清空Session /// </summary> public void Clear() { if (!RedisConfig.UseRedis) { HttpContext.Current.Session.Clear(); return; } using (var client = RedisClientManager.GetClient()) { client.Remove(RedisKey); _cacheItems.Clear(); } }
/// <summary> /// 移除一个Session项 /// </summary> /// <param name="field"></param> /// <returns></returns> public bool Remove(string field) { if (!RedisConfig.UseRedis) { if (HttpContext.Current.Session == null) { return(false); } HttpContext.Current.Session.Remove(field); } using (var client = RedisClientManager.GetClient()) { RemoveItemFromCaches(field); return(client.RemoveEntryFromHash(RedisKey, field)); } }
/// <summary> /// 获取一个Session项 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="field"></param> /// <returns></returns> public T Get <T>(string field) { if (!RedisConfig.UseRedis) { if (HttpContext.Current.Session == null) { return(default(T)); } return((T)HttpContext.Current.Session[field]); } var item = GetItemFromCaches(field); if (item != null) { return((T)item); } using (var client = RedisClientManager.GetClient()) { var str = client.GetValueFromHash(RedisKey, field); T value = SerializeHelper.DeserializeObject <T>(str); AddItemToCache(field, value); if (null == value) { str = client.GetValueFromHash(RedisKey, field); value = SerializeHelper.DeserializeObject <T>(str); if (null == value) { var ts = client.GetTimeToLive(RedisKey); LogHelper.WriteLog( string.Format(ErrorMessageFormat, field, RedisKey, ts.TotalSeconds, str), new Exception("两次查询后,结果依然是空")); } } //ResetExpire(); return(value); } }
/// <summary> /// 设置Session项 /// </summary> /// <param name="key"></param> /// <param name="value"></param> public void Set(string key, object value) { if (!RedisConfig.UseRedis) { if (HttpContext.Current.Session == null) { return; } HttpContext.Current.Session[key] = value; return; } using (var client = RedisClientManager.GetClient()) { RedisClientManager.UseTransaction(client, t => { t.QueueCommand(c => c.SetEntryInHash(RedisKey, key, SerializeHelper.SerializeObject(value))); t.QueueCommand(c => c.ExpireEntryIn(RedisKey, TimeSpan.FromMinutes(RedisConfig.TimeOut))); }); } AddItemToCache(key, value); }