.NET 6中如何使用Redis

1、安装redis

Redis在windows平台上不受官方支持,所以想要在window安装Redis就必须去下载windows提供的安装包。安装地址:https://github.com/tporadowski/redis/releases

2、在NueGet安装包

3、在appsettings.json文件里面添加Redis相关配置信息

"Redis": {
    "Connection": "127.0.0.1:6379,password=foobared", //连接地址,端口号,密码
    "InstanceName": "local", //实例名称
    "DefaultDB": "8" //db8数据库
  }

redis的密码,可在安装目录下找到redis.windows.conf文件打开查看

4、创建RedisHelper类,代码如下:

using StackExchange.Redis;
using System.Collections.Concurrent;

namespace WebApi.Redis
{
    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();
                }
            }
        }
    }
}

5、在program.cs中添加依赖

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

6、控制器中可用直接注入依赖使用

using Microsoft.AspNetCore.Mvc;
using StackExchange.Redis;
using WebApi.Redis;

namespace WebApi.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        private readonly IDatabase _redis;
        public TestController(RedisHelper redis) {
            _redis = redis.GetDatabase();
        }
        [HttpGet]
        public Person GetPerson()
        {
            string? name = _redis.StringGet("name");
            return new Person(name, 18);
        }
        [HttpPost]
        public string SavePerson(string name)
        {
            _redis.StringSet("name",name);
            return "保存成功!" + name;
        }
    }
}

7.运行测试(运行时候,确保redis服务打开)

相关推荐

  1. .NET使用Redis大全

    2024-01-09 11:20:01       33 阅读
  2. net6使用MongoDB

    2024-01-09 11:20:01       77 阅读
  3. 如何在PHP使用Memcached和Redis

    2024-01-09 11:20:01       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 11:20:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 11:20:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 11:20:01       87 阅读
  4. Python语言-面向对象

    2024-01-09 11:20:01       96 阅读

热门阅读

  1. 深度学习知识点总结

    2024-01-09 11:20:01       55 阅读
  2. Seata分布式事务

    2024-01-09 11:20:01       62 阅读
  3. Angular中的装饰器有哪些?怎么用?

    2024-01-09 11:20:01       58 阅读
  4. linux: ps 与 pidof 用法详解

    2024-01-09 11:20:01       54 阅读
  5. 【Linux】Linux系统编程——Linux常用快捷键

    2024-01-09 11:20:01       51 阅读
  6. 边缘计算设备是什么意思。

    2024-01-09 11:20:01       59 阅读
  7. ES6---扩展运算符详解

    2024-01-09 11:20:01       49 阅读
  8. 【力扣100】74.搜索二维矩阵 || 列表推导式

    2024-01-09 11:20:01       60 阅读
  9. Android如何判断scrollview滚到底部

    2024-01-09 11:20:01       54 阅读
  10. PG数据库更新表字段排序

    2024-01-09 11:20:01       56 阅读
  11. MySQL 8.0中新增的功能(七)

    2024-01-09 11:20:01       37 阅读
  12. git常用工具difftool的使用

    2024-01-09 11:20:01       47 阅读