.net core 编写通用的Redis功能

在 Package项目里面,添加包:StackExchange.Redis:

 九、.net core(.NET 6)添加通用的Redis功能

 

Common工具文件夹下,新建 Wsk.Core.Redis类库项目,并新建 RedisManage 类和对应接口 IRedisManage,如下图。然后,在该项目里面,引用共用包项目Wsk.Core.Package,用以使用Redis有关功能。

 九、.net core(.NET 6)添加通用的Redis功能

 

RedisManage类里面,新增几个用于连接Redis配置的全局变量,以及一个构造函数:

 九、.net core(.NET 6)添加通用的Redis功能

 

在配置文件里面,新建Redis的有关配置信息:

 九、.net core(.NET 6)添加通用的Redis功能

配置的Json文本:

 "Redis": [
    {
      "Name": "Wesky",
      "Ip": "127.0.0.1",
      "Port": 6379,
      "Password": "wesky123",
      "Timeout": 30,
      "Db": 3
    }
  ]

 

其中,Name是别名,可以任意起。IpRedis的服务端地址,例如安装本地,就是127.0.0.1,端口号Port默认是6379,密码可以通过Redis安装的根目录下的配置文件进行设置,Timeout是连接的超时时间,Db是使用RedisDB区,一般RedisDB区默认是015。注意:此处的配置使用的是数组,用于将来进行Redis分布式操作的可拓展。

看下redis安装目录下的配置文件局部一览:

 九、.net core(.NET 6)添加通用的Redis功能

 如果打算修改该配置文件来实现修改有关的配置信息,但是没有效果,注意在windows服务里面把redis服务进行重新启动。如果还不行,就把另外一个conf配置文件也做同样的操作,然后再重启redis服务。

 

接着,在解决方案下,新建一个文件夹,叫DataEntities,该文件夹当做将来存放各种实体类或有关项目的目录。现在咱们在该新建的文件夹下,新建一个类库项目:Wsk.Core.Entity,然后新建一个实体类,叫RedisConfig,用于读取到配置文件的Redis信息进行赋值使用:

 

 九、.net core(.NET 6)添加通用的Redis功能

 

回到Redis类库项目,在RedisManage类里面,添加一个方法ReadRedisSetting,用于读取该配置信息,并赋值给ConfigurationOptions类:

 九、.net core(.NET 6)添加通用的Redis功能

 

ReadRedisSetting代码:

  private ConfigurationOptions ReadRedisSetting()
        {
            try
            {
                List<RedisConfig> config = AppHelper.ReadAppSettings<RedisConfig>(new string[] { "Redis" }); // 读取Redis配置信息
                if (config.Any())
                {
                    ConfigurationOptions options = new ConfigurationOptions
                    {
                        EndPoints =
                            {
                                {
                                    config.FirstOrDefault().Ip,
                                    config.FirstOrDefault().Port
                                }
                            },
                        ClientName = config.FirstOrDefault().Name,
                        Password = config.FirstOrDefault().Password,
                        ConnectTimeout = config.FirstOrDefault().Timeout,
                        DefaultDatabase = config.FirstOrDefault().Db,
                    };
                    return options;
                }
                return null;
            }
            catch(Exception ex)
            {
                _logger.LogError($"获取Redis配置信息失败:{ex.Message}");
                return null;
            }

        }
View Code

相关文章: