asp.net Core 使用redis(StackExchange.Redis)

一、添加配置(appsettings.json)

"Redis": {
    "Default": {
      "Connection": "127.0.0.1:6379,password=12345678",
      "InstanceName": "实例:",
      "DefaultDB": 0
    }
  }

二、添加服务依赖(Startup.cs)

public IServiceProvider ConfigureServices(IServiceCollection services)
{
   //redis缓存
   var section = Configuration.GetSection("Redis:Default");
   string _connectionString = section.GetSection("Connection").Value;//连接字符串
   string _instanceName = section.GetSection("InstanceName").Value; //实例名称
   int _defaultDB = int.Parse(section.GetSection("DefaultDB").Value ?? "0"); //默认数据库           
   services.AddSingleton(new RedisHelper(_connectionString, _instanceName, _defaultDB));
}

三、redis帮助类(RedisHelper)

 public class RedisHelper : IDisposable
    {
        private string _connectionString; //连接字符串
        private string _instanceName; //实例名称
        private int _defaultDB; //默认数据库
        private ConcurrentDictionary<string, ConnectionMultiplexer> _connections;
        public RedisHelper(string connectionString, string instanceName, int defaultDB =0)
        {
            _connectionString = connectionString;
            _instanceName = instanceName;
            _defaultDB = defaultDB;
            _connections = new ConcurrentDictionary<string, ConnectionMultiplexer>();
        }

        /// <summary>
        /// 获取ConnectionMultiplexer
        /// </summary>
        /// <returns></returns>
        private ConnectionMultiplexer GetConnect()
        {
            return _connections.GetOrAdd(_instanceName, p => ConnectionMultiplexer.Connect(_connectionString));
        }
        
        /// <summary>
        /// 获取数据库
        /// </summary>
        /// <param name="configName"></param>
        /// <param name="db">默认为0:优先代码的db配置,其次config中的配置</param>
        /// <returns></returns>
        public IDatabase GetDatabase()
        {
            return GetConnect().GetDatabase(_defaultDB);
        }

        public IServer GetServer(string configName = null, int endPointsIndex = 0)
        {
            var confOption = ConfigurationOptions.Parse(_connectionString);
            return GetConnect().GetServer(confOption.EndPoints[endPointsIndex]);
        }

        public ISubscriber GetSubscriber(string configName = null)
        {
            return GetConnect().GetSubscriber();
        }

        public void Dispose()
        {
            if (_connections != null && _connections.Count > 0)
            {
                foreach (var item in _connections.Values)
                {
                    item.Close();
                }
            }
        }

四、在控制器中使用

 public class RedisController : Controller
    {
        private readonly IDatabase _redis;
        public RedisController(RedisHelper client)
        {
            _redis = client.GetDatabase();
        }

        public IActionResult Index()
        {
            _redis.StringSet("TestRedis", "11111");
           string temp  =  _redis.StringGet("TestRedis");
            return View();
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_26900081/article/details/83307641