C# redis使用

1.封装的redis帮助类


    public class FreeRedisHelper : IDisposable
    {
        private static FreeRedisHelper instance;
        private static readonly object lockObject = new object();
        private RedisClient _redisClient;

        public FreeRedisHelper()
        {
            _redisClient = new RedisClient("redis IP+端口,password=密码,defaultDatabase=0");
        }

        public static FreeRedisHelper Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (lockObject)
                    {
                        if (instance == null)
                        {
                            instance = new FreeRedisHelper();
                        }
                    }
                }
                return instance;
            }
        }
        public long IncrBy(string counter, int num)
        {
            long incrementedValue = _redisClient.IncrBy(counter, num);
            return incrementedValue;
        }

        public long DecrBy(string counter, int num = 1)
        {
            long decrementedValue = _redisClient.DecrBy(counter, num);
            return decrementedValue;
        }


        // 存储字符串
        public void SetString(string key, string value, int timeoutSeconds = 0)
        {
            _redisClient.Set(key, value, timeoutSeconds);
        }

        // 获取字符串
        public string GetString(string key)
        {
            return _redisClient.Get<string>(key);
        }

        // 存储哈希表
        public void SetHash(string key, Dictionary<string, string> hash)
        {
            _redisClient.HMSet(key, hash);
        }

        public void SetHash<T>(string key, Dictionary<string, T> keyValues)
        {
            foreach (var kvp in keyValues)
            {
                _redisClient.HMSet(key, kvp.Key, JsonConvert.SerializeObject(kvp.Value));
            }
        }
        public void SetHash(string key, string field, string values)
        {
            _redisClient.HMSet(key, field, values);
        }
        /// <summary>
        /// 根据key获取存储哈希表所有数据
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="key"></param>
        /// <returns>字典集合</returns>
        public Dictionary<string, T> HGetAll<T>(string key)
        {
            var result = new Dictionary<string, T>();
            var allData = _redisClient.HGetAll<string>(key);
            foreach (var item in allData)
            {
                string _v = item.Value.ToString();
                T model = JsonConvert.DeserializeObject<T>(_v);
                result.Add(item.Key, model);
            }
            return result;
        }

        // 获取哈希表
        public Dictionary<string, string> GetHash(string key)
        {
            return _redisClient.HGetAll(key);
        }

        // 存储列表
        public void SetList(string key, List<string> list)
        {
            _redisClient.LPush(key, list.ToArray());
        }

        // 获取列表
        public List<string> GetList(string key)
        {
            return _redisClient.LRange(key, 0, -1).ToList();
        }
        public void SetStringWithExpiration(string key, string value, int expirationSeconds)
        {
            _redisClient.Set(key, value, expirationSeconds);
        }

        public void ClearDataByKey(string key)
        {
            _redisClient.Del(key);
        }
        /// <summary>
        /// 删除hash表中的多个key
        /// </summary>
        /// <param name="key">主key</param>
        /// <param name="paras">子key集合</param>
        public long HDel(string key,string[] paras)
        {
           var del_count= _redisClient.HDel(key, paras);
           return del_count;
        }

        // 关闭连接
        public void Dispose()
        {
            _redisClient.Dispose();
        }
    }

2.获取redis

//1.根据key获取存储哈希表所有数据
 var redis = FreeRedisHelper.Instance;
 var dic_cart_member = redis.HGetAll<类名>(redis_key_cart);
//redis_key_cart 对应的key
//2.得到字符串
var listkey = redis.GetString(redis_key);

3.赋值redis

redis.SetString(redis_key, JsonConvert.SerializeObject(_list), category_timeout);
//redis_key  对应 key
// JsonConvert.SerializeObject(_list) 内容
//category_timeout 过期时间