在实际项目开发过程中,很多都会使用到redis缓存来提高系统性能和接口反应速度,在redis封装上我选择了SimpleRedis;
SimpleRedis基于新生命团队NewLife.Redis的封装,支持.NETCore3/.NET6/7。
NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。
首先通过Nuget来下载SimpleRedis的依赖包
然后创建redis缓存帮助类(RedisCacheService),主要封装了操作redis缓存数据的一些方法
/// <summary>
/// Redis缓存
/// </summary>
public class RedisCacheService
{
private readonly ISimpleRedis _simpleRedis;
//注入ISimpleRedis缓存客户端
public RedisCacheService(ISimpleRedis simpleRedis)
{
this._simpleRedis = simpleRedis;
}
#region 普通操作
public T Get<T>(string key)
{
return _simpleRedis.Get<T>(key);
}
public int Remove(params string[] keys)
{
return _simpleRedis.GetFullRedis().Remove(keys);
}
public bool Set<T>(string key, T value, int expire = -1)
{
return _simpleRedis.Set(key, value, expire);
}
public bool Set<T>(string key, T value, TimeSpan expire)
{
return _simpleRedis.Set(key, value, expire);
}
public bool SetExpire(string key, TimeSpan expire)
{
return _simpleRedis.GetFullRedis().SetExpire(key, expire);
}
public TimeSpan GetExpire(string key)
{
return _simpleRedis.GetFullRedis().GetExpire(key);
}
public bool ContainsKey(string key)
{
return _simpleRedis.ContainsKey(key);
}
public void Clear()
{
_simpleRedis.Clear();
}
public void DelByPattern(string pattern)
{
_simpleRedis.DelByPattern(pattern);
}
#endregion
#region 集合操作
public IDictionary<string, T> GetAll<T>(IEnumerable<string> keys)
{
return _simpleRedis.GetFullRedis().GetAll<T>(keys);
}
public void SetAll<T>(IDictionary<string, T> values, int expire = -1)
{
_simpleRedis.GetFullRedis().SetAll(values, expire);
}
public IDictionary<string, T> GetDictionary<T>(string key)
{
return _simpleRedis.GetFullRedis().GetDictionary<T>(key);
}
public IProducerConsumer<T> GetQueue<T>(string key)
{
return _simpleRedis.GetFullRedis().GetQueue<T>(key);
}
public IProducerConsumer<T> GetStack<T>(string key)
{
return _simpleRedis.GetFullRedis().GetStack<T>(key);
}
public ICollection<T> GetSet<T>(string key)
{
return _simpleRedis.GetFullRedis().GetSet<T>(key);
}
#endregion
public void HashAdd<T>(string key, string hashKey, T value)
{
_simpleRedis.HashAdd<T>(key, hashKey, value);
}
public bool HashSet<T>(string key, Dictionary<string, T> dic)
{
return _simpleRedis.HashSet<T>(key, dic);
}
public int HashDel<T>(string key, params string[] fields)
{
return _simpleRedis.HashDel<T>(key, fields);
}
public List<T> HashGet<T>(string key, params string[] fields)
{
return _simpleRedis.HashGet<T>(key, fields);
}
public T HashGetOne<T>(string key, string field)
{
return _simpleRedis.HashGetOne<T>(key, field);
}
public IDictionary<string, T> HashGetAll<T>(string key)
{
return _simpleRedis.HashGetAll<T>(key);
}
}
在Program启动类中,执行添加SimpleRedis的redis服务,单例注入redis缓存帮助类(RedisCacheService)到Services容器中
//启用redis缓存
var connectionString = #34;server={redisConfig.Address};password={redisConfig.Password};db={redisConfig.Db}";
//注入redis
webAppBuilder.Services.AddSimpleRedis(connectionString);
webAppBuilder.Services.AddSingleton<ISimpleCacheService, RedisCacheService>();
在业务中可以通过注入的方式获取RedisCacheService类,来操作缓存数据