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 过期时间