/// <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); }
/// <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); })); }
/// <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()); }
/// <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))); }
/// <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; })); }