Пример #1
0
        /// <summary>
        /// 存储数据到hash表
        /// </summary>
        /// <param name="kValues"></param>
        /// <param name="second"></param>
        /// <param name="isSetHashKeyExpire">是否制定HashKey的过期时间</param>
        /// <param name="overdueStrategy"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public bool HashSet <T>(Dictionary <string, Dictionary <string, T> > kValues, long second = -1L,
                                bool isSetHashKeyExpire = true, OverdueStrategy overdueStrategy = null)
        {
            return(base.Execute(overdueStrategy, () =>
            {
                Dictionary <string, object[]> keyValues = new Dictionary <string, object[]>();
                foreach (var item in kValues)
                {
                    List <object> dataKeyValues = new List <object>();
                    foreach (var kvp in item.Value)
                    {
                        dataKeyValues.Add(isSetHashKeyExpire ? GetKey(kvp.Key) : kvp.Key);
                        dataKeyValues.Add(ConvertJson(kvp.Value));
                    }

                    keyValues.Add(isSetHashKeyExpire ? GetKey(item.Key) : item.Key, dataKeyValues.ToArray());
                }

                if (isSetHashKeyExpire)
                {
                    return string.Equals(QuickHelperBase.HashSetHashFileExpire(keyValues, GetExpire(second)), "OK",
                                         StringComparison.OrdinalIgnoreCase);
                }

                return string.Equals(QuickHelperBase.HashSetExpire(keyValues, GetExpire(second)), "OK",
                                     StringComparison.OrdinalIgnoreCase);
            }, () => { return false; }));
        }
        /// <summary>
        /// 保存一个对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="obj"></param>
        /// <param name="expiry"></param>
        /// <param name="overdueStrategy"></param>
        /// <returns></returns>
        public bool StringSet <T>(string key, T obj, TimeSpan?expiry = default(TimeSpan?),
                                  OverdueStrategy overdueStrategy    = null)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }

            if (expiry != null)
            {
                base.Execute(overdueStrategy, () => _cache.Set(key, obj,
                                                               new MemoryCacheEntryOptions()
                                                               .SetAbsoluteExpiration(expiry.Value)
                                                               ), () => _cache.Set(key, obj, new MemoryCacheEntryOptions().SetSlidingExpiration(expiry.Value)));
            }
            else
            {
                _cache.Set(key, obj);
            }

            return(true);
        }
Пример #3
0
 /// <summary>
 /// 保存一个对象
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="obj"></param>
 /// <param name="expiry"></param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public Task <bool> StringSetAsync <T>(string key, T obj, TimeSpan?expiry = default(TimeSpan?),
                                       OverdueStrategy overdueStrategy    = null)
 {
     return(base.Execute(overdueStrategy, () => QuickHelperBase.SetAsync(key, ConvertJson <T>(obj),
                                                                         expiry.HasValue ? Convert.ToInt32(expiry.Value.TotalSeconds) : -1),
                         () => { return Task.FromResult(false); }));
 }
Пример #4
0
 /// <summary>
 /// 存储数据到hash表
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="dataKey"></param>
 /// <param name="t"></param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public async Task <bool> HashSetAsync <T>(string key, string dataKey, T t, OverdueStrategy overdueStrategy = null)
 {
     return((await base.Execute(overdueStrategy,
                                () => { return QuickHelperBase.HashSetAsync(key, dataKey, ConvertJson <T>(t)); },
                                () => { return Task.FromResult("False"); })).Equals("TRUE", StringComparison.OrdinalIgnoreCase));
     // return string.Equals(await QuickHelperBase.HashSetAsync(key, dataKey, ConvertJson<T>(t)), "TRUE",
     //     StringComparison.OrdinalIgnoreCase);
 }
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="overdueStrategy">缓存过期策略</param>
        /// <param name="absoluteFunc">绝对过期方法</param>
        /// <param name="slidingFunc">滑动过期方法</param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        protected virtual T Execute <T>(OverdueStrategy overdueStrategy, Func <T> absoluteFunc, Func <T> slidingFunc)
        {
            if (overdueStrategy == null || overdueStrategy.Equals(OverdueStrategy.AbsoluteExpiration))
            {
                return(absoluteFunc.Invoke());
            }

            return(slidingFunc.Invoke());
        }
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="overdueStrategy">缓存过期策略</param>
        /// <param name="absoluteFunc">绝对过期方法</param>
        /// <param name="slidingFunc">滑动过期方法</param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        protected virtual async Task <T> Execute <T>(OverdueStrategy overdueStrategy, Func <Task <T> > absoluteFunc, Func <Task <T> > slidingFunc)
        {
            if (overdueStrategy == null || overdueStrategy.Equals(OverdueStrategy.AbsoluteExpiration))
            {
                return(await absoluteFunc.Invoke());
            }

            return(await slidingFunc.Invoke());
        }
Пример #7
0
        /// <summary>
        /// 存储数据到hash表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="dataKey"></param>
        /// <param name="t"></param>
        /// <param name="second">秒</param>
        /// <param name="isSetHashKeyExpire">false:设置key的过期时间(整个键使用一个过期时间),true:设置hashkey的过期时间,默认设置的为HashKey的过期时间(单个datakey使用一个过期时间)。</param>
        /// <param name="overdueStrategy"></param>
        /// <returns></returns>
        public bool HashSet <T>(string key, string dataKey, T t, long second = -1L, bool isSetHashKeyExpire = true,
                                OverdueStrategy overdueStrategy = null)
        {
            string value = "";

            return(base.Execute(overdueStrategy, () =>
            {
                if (!isSetHashKeyExpire)
                {
                    value =
                        QuickHelperBase.HashSetExpire(key, GetExpire(second), dataKey, ConvertJson(t));
                }
                else
                {
                    value = QuickHelperBase.HashSetHashFileExpire(GetKey(key), GetKey(dataKey), GetExpire(second),
                                                                  ConvertJson(t));
                }

                bool result = string.Equals(value, "OK",
                                            StringComparison.OrdinalIgnoreCase);
                return result;
            }, () => { return false; }));
        }
 /// <summary>
 /// 保存单个key value
 /// </summary>
 /// <param name="key">Redis Key</param>
 /// <param name="value">保存的值</param>
 /// <param name="expiry">过期时间</param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public bool StringSet(string key, string value, TimeSpan?expiry = default(TimeSpan?),
                       OverdueStrategy overdueStrategy           = null)
 {
     return(StringSet <string>(key, value, expiry, overdueStrategy));
 }
 /// <summary>
 /// 存储数据到hash表
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="dataKey"></param>
 /// <param name="t"></param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public Task <bool> HashSetAsync <T>(string key, string dataKey, T t, OverdueStrategy overdueStrategy = null)
 {
     return(base.Execute(overdueStrategy, () => new Task <bool>(() => HashSet(key, dataKey, t)),
                         () => new Task <bool>(() => false)));
 }
 /// <summary>
 /// 存储数据到hash表
 /// </summary>
 /// <param name="kValues"></param>
 /// <param name="second"></param>
 /// <param name="isSetHashKeyExpire"></param>
 /// <param name="overdueStrategy"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public bool HashSet <T>(Dictionary <string, Dictionary <string, T> > kValues, long second = -1L,
                         bool isSetHashKeyExpire = true, OverdueStrategy overdueStrategy = null)
 {
     return(base.Execute(overdueStrategy, () => false, () => false));
 }
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="dataKey"></param>
 /// <param name="t"></param>
 /// <param name="second"></param>
 /// <param name="isSetHashKeyExpire"></param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public bool HashSet <T>(string key, string dataKey, T t, long second = -1L, bool isSetHashKeyExpire = true,
                         OverdueStrategy overdueStrategy = null)
 {
     return(base.Execute(overdueStrategy, () => false, () => false));
 }
 /// <summary>
 /// 保存一个对象
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="obj"></param>
 /// <param name="expiry"></param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public Task <bool> StringSetAsync <T>(string key, T obj, TimeSpan?expiry = default(TimeSpan?),
                                       OverdueStrategy overdueStrategy    = null)
 {
     return(base.Execute(overdueStrategy, () => new Task <bool>(() => StringSet(key, obj, expiry)),
                         () => { return new Task <bool>(() => false); }));
 }
 /// <summary>
 /// 保存单个key value
 /// </summary>
 /// <param name="key">Redis Key</param>
 /// <param name="value">保存的值</param>
 /// <param name="expiry">过期时间</param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public Task <bool> StringSetAsync(string key, string value, TimeSpan?expiry = default(TimeSpan?),
                                   OverdueStrategy overdueStrategy           = null)
 {
     return(new Task <bool>(() => StringSet(key, value, expiry, overdueStrategy)));
 }
Пример #14
0
 /// <summary>
 /// 保存一个对象
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="obj"></param>
 /// <param name="expiry"></param>
 /// <param name="overdueStrategy"></param>
 /// <returns></returns>
 public bool StringSet <T>(string key, T obj, TimeSpan?expiry = default(TimeSpan?),
                           OverdueStrategy overdueStrategy    = null)
 {
     return(base.Execute(overdueStrategy, () => QuickHelperBase.Set(key, ConvertJson(obj),
                                                                    expiry.HasValue ? Convert.ToInt32(expiry.Value.TotalSeconds) : -1), () => { return false; }));
 }