/// <summary>
/// .net core 下添加引用 ServiceStack.Redis
/// Redis缓存操作类
/// </summary>
public class RedisHelper
{
/// <summary>
/// 判断某个数据是否已经被缓存
/// </summary>
public static bool Exist(string key)
{
var result = new RedisOperatorBase().Redis.ContainsKey(key);
return result;
}
/// <summary>
/// 判断某个数据是否已经被缓存
/// </summary>
public static bool Exist<T>(string hashId, string key)
{
var result = new RedisOperatorBase().Redis.HashContainsEntry(hashId, key);
return result;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public static bool Set(string key, string value)
{
var result = new RedisOperatorBase().Set(key, value);
return result;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public static bool Set(string key, string value, DateTime tmpExpire)
{
var result = new RedisOperatorBase().Set(key, value, tmpExpire);
return result;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public static bool Set<T>(string key, T t)
{
var result = new RedisOperatorBase().Set<T>(key, t);
return result;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public static bool Set<T>(string key, T t, DateTime tmpExpire)
{
var result = new RedisOperatorBase().Set<T>(key, t, tmpExpire);
return result;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public static bool Set<T>(string hashId, string key, T t, DateTime tmpExpire)
{
var result = new RedisOperatorBase().Set(key, t);
return result;
}
/// <summary>
/// 移除key的value
/// </summary>
public static bool Remove(string key)
{
var result = new RedisOperatorBase().Remove(key);
return result;
}
/// <summary>
/// 移除hash中的某值
/// </summary>
public static bool Remove(string hashId, string key)
{
var result = new RedisOperatorBase().Remove(hashId, key);
return result;
}
/// <summary>
/// 根据key获取数据
/// </summary>
public static string Get(string key)
{
var result = new RedisOperatorBase().Get(key);
return result;
}
/// <summary>
/// 存取任意类型的值(hashId与key相同)
/// </summary>
public static T Get<T>(string key)
{
var result = new RedisOperatorBase().Get<T>(key);
return result;
}
}
/// <summary>
/// Redis缓存操作
/// </summary>
public class RedisOperatorBase
{
/// <summary>
/// redis配置文件信息
/// </summary>
private readonly string _redisServiceUrl = "10.31.64.2";
private readonly int _redisServicePortNum = 6379;
//redis缓存对象
private RedisClient _redis = null;
/// <summary>
/// 定义缓存对象
/// </summary>
public RedisClient Redis
{
get
{
if (_redis == null)
{
_redis = new RedisClient(_redisServiceUrl, _redisServicePortNum);
}
return _redis;
}
}
private void Dispose()
{
_redis.Dispose();
GC.SuppressFinalize(this);
}
/// <summary>
/// 保存数据DB文件到硬盘
/// </summary>
private void Save()
{
Redis.Save();
Dispose();
}
/// <summary>
/// 异步保存数据DB文件到硬盘
/// </summary>
private void SaveAsync()
{
Redis.SaveAsync();
Dispose();
}
#region /// redis操作方法
/// <summary>
/// 判断某个数据是否已经被缓存
/// </summary>
public bool Exist(string key)
{
try
{
var result = Redis.ContainsKey(key);
Dispose();
return result;
}
catch
{
return false;
}
}
/// <summary>
/// 判断某个数据是否已经被缓存
/// </summary>
public bool Exist<T>(string hashId, string key)
{
try
{
var result = Redis.HashContainsEntry(hashId, key);
Dispose();
return result;
}
catch
{
return false;
}
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public bool Set(string key, string value)
{
try
{
var tmpVal =JsonConvert.SerializeObject(value);
Redis.Set<string>(key, tmpVal, DateTime.Now.AddMinutes(30));
Save();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public bool Set(string key, string value, DateTime tmpExpire)
{
try
{
var tmpVal = JsonConvert.SerializeObject(value);
Redis.Set(key, tmpVal, tmpExpire);
Save();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public bool Set<T>(string key, T t)
{
try
{
Redis.Set<T>(key, t, DateTime.Now.AddHours(12));
Save();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 存储数据到hash表
/// </summary>
public bool Set<T>(string key, T t, DateTime tmpExpire)
{
try
{
Redis.Set<T>(key, t, tmpExpire);
Save();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 移除key的value
/// </summary>
public bool Remove(string key)
{
try
{
var result = Redis.Remove(key);
Dispose();
return result;
}
catch
{
return false;
}
}
/// <summary>
/// 移除hash中的某值
/// </summary>
public bool Remove(string hashId, string key)
{
try
{
var result = Redis.RemoveEntryFromHash(hashId, key);
Dispose();
return result;
}
catch
{
return false;
}
}
/// <summary>
/// 根据key获取数据
/// </summary>
public string Get(string key)
{
try
{
var value = Redis.Get<string>(key);
var result = JsonConvert.DeserializeObject<string>(value);
Dispose();
return result;
}
catch
{
return null;
}
}
/// <summary>
/// 存取任意类型的值
/// </summary>
public T Get<T>(string key)
{
try
{
var result = Redis.Get<T>(key);
Dispose();
return result;
}
catch
{
return default(T);
}
}
#endregion
}