コード例 #1
0
 public void ResetExpire()
 {
     if (!RedisConfig.UseRedis)
     {
         return;
     }
     using (var client = RedisClientManager.GetClient())
     {
         client.ExpireEntryIn(RedisKey, TimeSpan.FromMinutes(RedisConfig.TimeOut));
     }
 }
コード例 #2
0
        /// <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));
            }
        }
コード例 #3
0
 /// <summary>
 /// 清空Session
 /// </summary>
 public void Clear()
 {
     if (!RedisConfig.UseRedis)
     {
         HttpContext.Current.Session.Clear();
         return;
     }
     using (var client = RedisClientManager.GetClient())
     {
         client.Remove(RedisKey);
         _cacheItems.Clear();
     }
 }
コード例 #4
0
 /// <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));
     }
 }
コード例 #5
0
        /// <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);
            }
        }
コード例 #6
0
        /// <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);
        }