当前位置: 首页 > news >正文

ASP .NET Core 8高效集成Redis缓存实战

Redis 最常用的功能是作为高性能的 分布式缓存,替代默认的内存缓存(IMemoryCache),适用于多服务器部署的场景。

1、安装Redis Nuget包

dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis

2、在appsettings.json中添加redis配置项

{"RedisConfig": {"Connection": "localhost:6379","Password": "","InstanceName": "BackendManagement:","DefaultDatabase": 0}
}

3、创建redis配置项对象

/// <summary>
/// redis配置信息
/// </summary>
public class RedisConfig
{/// <summary>/// 连接字符串/// </summary>public string Connection { get; set; } = string.Empty;/// <summary>/// 密码/// </summary>public string Password {  get; set; } = string.Empty;/// <summary>/// 实例名/// </summary>public string InstanceName { get; set; } = string.Empty;/// <summary>/// 默认数据库索引/// </summary>public int DefaultDatabase { get; set; }
}

4、在 Program.cs 中配置 Redis 服务

var builder = WebApplication.CreateBuilder(args);RedisConfig? redisConfig = builder.Configuration.GetSection("RedisConfig").Get<RedisConfig>();if (redisConfig != null){builder.Services.AddSingleton(redisConfig);builder.Services.AddSingleton<IConnectionMultiplexer>(sp =>{var configuration = ConfigurationOptions.Parse(redisConfig.Connection);configuration.AbortOnConnectFail = false; // 不要立即失败configuration.ConnectTimeout = 5000;      // 5秒连接超时configuration.SyncTimeout = 5000;         // 5秒操作超时configuration.ReconnectRetryPolicy = new ExponentialRetry(1000); // 重试策略if (!string.IsNullOrEmpty(redisConfig.Password)){configuration.Password = redisConfig.Password;}var multiplexer = ConnectionMultiplexer.Connect(configuration);// 注册应用程序关闭时的清理var lifetime = sp.GetRequiredService<IHostApplicationLifetime>();lifetime.ApplicationStopping.Register(() =>{multiplexer.Close();multiplexer.Dispose();});return multiplexer;});builder.Services.AddSingleton<IDatabase>(sp =>{var multiplexer = sp.GetRequiredService<IConnectionMultiplexer>();return multiplexer.GetDatabase(redisConfig.DefaultDatabase);});}else{Log.Error("RedisConfig is empty.");}var app = builder.Build();

5、使用redis数据库

public class RedisService
{private readonly IDatabase _redisDB;public RedisService(IDatabase redisDB){_redisDB = redisDB;}public async Task PerformOperations(){await _redisDB.StringSetAsync("mykey", "myvalue");var value = await _redisDB.StringGetAsync("mykey");}
}

http://www.xdnf.cn/news/1162639.html

相关文章:

  • 相机标定(非ROS相机)
  • Linux的相关指令
  • 中文分词模拟器 - 华为OD统一考试(Java 题解)
  • vxe-table 通过配置 ajax 方式自动请求数据,适用于简单场景的列表
  • 《RISC-V 导论:设计与实践》开源课件(附下载链接)
  • 【web自动化】-5- fixture集中管理和项目重构
  • MTSC2025参会感悟:大模型 + CV 重构全终端 UI 检测技术体系
  • OR条件拆分:避免索引失效的查询重构技巧
  • 计算机网络第四章(3)——网络层《IPV4(子网划分、子网掩码)》
  • 模型系列(篇一)-Bert
  • Python Locust库详解:从入门到分布式压力测试实战
  • 5道挑战题writup
  • 跨端分栏布局:从手机到Pad的优雅切换
  • 将 RustFS 用作 GitLab 对象存储后端
  • 前后端分离项目进阶1---前端
  • Ubuntu 22.04 使用 Docker 安装 Redis 5 (安装包形式)
  • 设备虚拟化技术-IRF
  • 电子数据取证领域的双轮驱动——手工分析 vs 自动化分析
  • SpringSecurity 详细介绍(认证和授权)
  • 复制docker根目录遇到的权限问题
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(二)
  • docker磁盘空间不足解决办法
  • MongoDB 查询时区问题
  • linux定时器使用
  • 3、Spring AI_DeepSeek模型-多轮对话
  • 江苏思必驰科技25Java实习面经
  • HTTP,HTTPS
  • 服务器系统时间不准确怎么办?
  • 图论基本算法
  • 部署Zabbix企业级分布式监控