Beispiel #1
0
        /// <summary>
        /// 获取指定key的List
        /// </summary>
        /// <param name="key"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List <T> ListRange <T>(string key, long count = 1000)
        {
            List <T> list = new List <T>();

            Enumerable.ToList <string>(CsRedisHelper.LRang(key, 0, count)).ForEach(p => { list.Add(ConvertObj <T>(p)); });
            return(list);
        }
Beispiel #2
0
        /// <summary>
        /// 查找所有符合给定模式( pattern)的 key
        /// </summary>
        /// <param name="pattern">如:runoob*,不含prefix前辍RedisHelper.Name</param>
        /// <returns></returns>
        public List <string> Keys(string pattern)
        {
            var keys = new List <string>();

            CsRedisHelper.Keys(_prefix + pattern).ToList().ForEach(p => { keys.Add(p.Substring(_prefix.Length)); });
            return(keys);
        }
Beispiel #3
0
 /// <summary>
 ///
 /// </summary>
 public RedisCacheService(RedisConfig redisConfig, ICollection <IJsonProvider> jsonProviders)
 {
     _jsonProvider = InjectionSelectionCommon.GetImplement(jsonProviders);
     ValidationCommon.Check(redisConfig, "redis配置异常", HttpStatus.Err.Name);
     new RedisConfigValidator().Validate(redisConfig).Check();
     _prefix = redisConfig.Name;
     CsRedisHelper.InitializeConfiguration(redisConfig);
 }
Beispiel #4
0
        /// <summary>
        /// 存储数据到hash表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="dataKey"></param>
        /// <param name="t"></param>
        /// <param name="second">秒</param>
        /// <returns></returns>
        public bool HashSet <T>(string key, string dataKey, T t, long second = -1)
        {
            string value  = CsRedisHelper.HashSet(key, GetExpire(second), dataKey, ConvertJson <T>(t));
            bool   result = string.Equals(value, "OK",
                                          StringComparison.OrdinalIgnoreCase);

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// 添加 (当score一样value一样时不插入)
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="score"></param>
        /// <param name="isOverlap"></param>
        /// <returns></returns>
        public bool SortedSetAdd <T>(string key, T value, double score, bool isOverlap = false)
        {
            if (isOverlap)
            {
                SortedSetRemove <T>(key, value);
            }

            return(CsRedisHelper.ZAdd(key, (score, ConvertJson <T>(value))) > 0);
        }
Beispiel #6
0
        /// <summary>
        ///  存储数据到hash表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="kvalues"></param>
        /// <param name="second">秒</param>
        /// <returns></returns>
        public bool HashSet <T>(string key, Dictionary <string, T> kvalues, long second = -1)
        {
            List <object> keyValues = new List <object>();

            foreach (var kvp in kvalues)
            {
                keyValues.Add(kvp.Key);
                keyValues.Add(ConvertJson <T>(kvp.Value));
            }

            return(string.Equals(CsRedisHelper.HashSet(key, GetExpire(second), keyValues.ToArray()), "OK",
                                 StringComparison.OrdinalIgnoreCase));
        }
Beispiel #7
0
        /// <summary>
        /// 获取已过期的hashKey
        /// </summary>
        /// <param name="count"></param>
        /// <returns></returns>
        public Dictionary <string, string> SortedSetRangeByRankAndOverTime(long count = 1000)
        {
            var keyList = CsRedisHelper
                          .ZRevRangeByScore(_overtimeCacheKey, TimeCommon.GetTimeSpan(DateTime.Now), 0, count, null)
                          .ToList <string>(); //得到过期的key集合

            Dictionary <string, string> hasKey = new Dictionary <string, string>();

            keyList.ForEach(item =>
            {
                var keys = item.Replace("~_~", "!").Split('!');
                if (!hasKey.ContainsKey(keys[0]))
                {
                    hasKey.Add(keys[0], keys[1]);
                }
            });
            return(hasKey);
        }
Beispiel #8
0
        /// <summary>
        /// 从hash表获取数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="dataKeys"></param>
        /// <returns></returns>
        public Dictionary <string, string> HashGet(string key, List <string> dataKeys)
        {
            if (dataKeys != null && dataKeys.Count > 0)
            {
                dataKeys = dataKeys.Distinct().ToList();
                var values = CsRedisHelper.HashGet(key, dataKeys.ToArray()).ToList();

                Dictionary <string, string> dic = new Dictionary <string, string>();
                for (int i = 0; i < dataKeys.Count; i++)
                {
                    if (!dic.ContainsKey(dataKeys[i]) && values[i] != null)
                    {
                        dic.Add(dataKeys[i], values[i]);
                    }
                }

                return(dic);
            }
            else
            {
                return(CsRedisHelper.HashGetAll(key));
            }
        }
Beispiel #9
0
 /// <summary>
 /// 获取单个key的值
 /// </summary>
 /// <param name="key">Redis Key</param>
 /// <returns></returns>
 public string StringGet(string key)
 {
     return(CsRedisHelper.Get(key));
 }
Beispiel #10
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public async Task <bool> SortedSetRemoveAsync <T>(string key, T value)
 {
     return(await CsRedisHelper.ZRemAsync(key, new string[1] {
         ConvertJson <T>(value)
     }) > 0);
 }
Beispiel #11
0
 /// <summary>
 /// 获取全部
 /// </summary>
 /// <param name="key"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 public async Task <List <T> > SortedSetRangeByRankAsync <T>(string key, long count = 1000)
 {
     return(ConvertListObj <T>(Enumerable.ToList <string>((await CsRedisHelper.ZRangeAsync(key, 0, count)))));
 }
Beispiel #12
0
 /// <summary>
 /// 获取集合中的数量
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public long SortedSetLength(string key)
 {
     return(CsRedisHelper.ZCard(key));
 }
Beispiel #13
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <param name="score"></param>
 /// <returns></returns>
 public async Task <bool> SortedSetAddAsync <T>(string key, T value, double score)
 {
     return(await CsRedisHelper.ZAddAsync(key, (score, ConvertJson <T>(value))) > 0);
 }
Beispiel #14
0
 /// <summary>
 /// 移除指定ListId的内部List的值
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public async Task <long> ListRemoveAsync <T>(string key, T value)
 {
     return(await CsRedisHelper.LRemAsync(key, int.MaxValue, ConvertJson <T>(value)));
 }
Beispiel #15
0
 /// <summary>
 /// 判断是否存在项
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public bool SortedSetExistItem <T>(string key, T value)
 {
     return(CsRedisHelper.ZScore(key, ConvertJson <T>(value)).HasValue);
 }
Beispiel #16
0
 /// <summary>
 /// 删除指定Key的缓存
 /// 用于在 key 存在时删除 key
 /// </summary>
 /// <param name="keys">待删除的Key集合,不含prefix前辍RedisHelper.Name</param>
 /// <returns>返回删除的数量</returns>
 public long Remove(params string[] keys)
 {
     return(CsRedisHelper.Remove(keys));
 }
Beispiel #17
0
 /// <summary>
 /// 设置指定key过期时间
 /// </summary>
 /// <param name="key">不含prefix前辍RedisHelper.Name</param>
 /// <param name="expire">过期时间</param>
 /// <returns></returns>
 public bool Expire(string key, TimeSpan expire)
 {
     return(CsRedisHelper.Expire(key, expire));
 }
Beispiel #18
0
 /// <summary>
 /// 获取集合中的数量
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public long ListLength(string key)
 {
     return(CsRedisHelper.LLen(key));
 }
Beispiel #19
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public bool SortedSetRemove <T>(string key, T value)
 {
     return(CsRedisHelper.ZRem(key, new string[1] {
         ConvertJson <T>(value)
     }) > 0);
 }
Beispiel #20
0
 /// <summary>
 /// 获取集合中的数量
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public async Task <long> ListLengthAsync(string key)
 {
     return(await CsRedisHelper.LLenAsync(key));
 }
Beispiel #21
0
 /// <summary>
 /// 出栈
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <returns></returns>
 public async Task <T> ListLeftPopAsync <T>(string key)
 {
     return(ConvertObj <T>(await CsRedisHelper.LPopAsync(key)));
 }
Beispiel #22
0
 /// <summary>
 /// 入栈
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public async Task <long> ListLeftPushAsync <T>(string key, T value)
 {
     return(await CsRedisHelper.LPushAsync(key, new string[1] {
         ConvertJson <T>(value)
     }));
 }
Beispiel #23
0
 /// <summary>
 /// 获取集合中的数量
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public async Task <long> SortedSetLengthAsync(string key)
 {
     return(await CsRedisHelper.ZCardAsync(key));
 }
Beispiel #24
0
 /// <summary>
 /// 出栈
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <returns></returns>
 public T ListLeftPop <T>(string key)
 {
     return(ConvertObj <T>(CsRedisHelper.LPop(key)));
 }
Beispiel #25
0
 /// <summary>
 /// 删除指定Key的缓存
 /// 用于在 key 存在时删除 key
 /// </summary>
 /// <param name="keys">待删除的Key集合,不含prefix前辍RedisHelper.Name</param>
 /// <returns>返回删除的数量</returns>
 public long Remove(List <string> keys)
 {
     return(CsRedisHelper.Remove(keys?.ToArray()));
 }
Beispiel #26
0
 /// <summary>
 /// 保存单个key value
 /// </summary>
 /// <param name="key">Redis Key</param>
 /// <param name="value">保存的值</param>
 /// <param name="expiry">过期时间</param>
 /// <returns></returns>
 public bool StringSet(string key, string value, TimeSpan?expiry = default(TimeSpan?))
 {
     return(CsRedisHelper.Set(key, value, expiry.HasValue ? Convert.ToInt32(expiry.Value.TotalSeconds) : -1));
 }
Beispiel #27
0
 /// <summary>
 /// 检查给定 key 是否存在
 /// </summary>
 /// <param name="key">不含prefix前辍RedisHelper.Name</param>
 /// <returns></returns>
 public bool Exist(string key)
 {
     return(CsRedisHelper.Exists(key));
 }
Beispiel #28
0
 /// <summary>
 /// 保存一个对象
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="obj"></param>
 /// <param name="expiry"></param>
 /// <returns></returns>
 public bool StringSet <T>(string key, T obj, TimeSpan?expiry = default(TimeSpan?))
 {
     return(CsRedisHelper.Set(key, ConvertJson(obj),
                              expiry.HasValue ? Convert.ToInt32(expiry.Value.TotalSeconds) : -1));
 }
Beispiel #29
0
 /// <summary>
 /// 获取全部
 /// </summary>
 /// <param name="key"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 public List <T> SortedSetRangeByRank <T>(string key, long count = 1000)
 {
     return(ConvertListObj <T>(CsRedisHelper.ZRange(key, 0, count).ToList <string>()));
 }
Beispiel #30
0
 /// <summary>
 /// 获取指定索引的集合
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="fromRank"></param>
 /// <param name="toRank"></param>
 /// <returns></returns>
 public List <T> GetRangeFromSortedSet <T>(string key, long fromRank, long toRank)
 {
     return(ConvertListObj <T>(Enumerable.ToList <string>(CsRedisHelper.ZRange(key, fromRank, toRank))));
 }