玖叶教程网

前端编程开发入门

.Net6基础功能封装分享8(Redis集成)

在实际项目开发过程中,很多都会使用到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类,来操作缓存数据

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言