当前位置: 首页 > 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.dtcms.com/a/290523.html

相关文章:

  • C++中的deque容器
  • C#/.NET/.NET Core技术前沿周刊 | 第 47 期(2025年7.14-7.20)
  • 解决vscode中vue格式化后缩进太小的问题,并去除分号 - 设置Vetur tabSize从2到4,设置prettier取消分号semi
  • Hyperledger Fabric V2.5 生产环境部署及安装Java智能合约
  • 从0开始学习R语言--Day53--AFT模型
  • 什么是“差分“?
  • WebkitSpeechRecognition 语音识别
  • 【备忘录】Ubuntu 配置虚拟显示器
  • 嵌入式学习-土堆目标检测(1)-day26
  • 每日数据推荐:一线城市基于手机信令的职住数据
  • 主流监控设备RTSP地址
  • 从env到mm_struct:环境变量与虚拟内存的底层实现
  • Linux 任务调度在进程管理中的关系和运行机制
  • STM32键盘带蓝牙功能
  • 时空数据可视化新范式:基于Three.js的生产全流程时间轴回溯技术解析
  • 首家!数巅AskBI通过中国信通院数据分析智能体专项测试
  • Shell实现服务检查看门程序
  • 实时数据可视化的“心跳”设计:毫秒级延迟下的动态图表抗闪烁优化方案
  • 基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js
  • 我国《数字中国规划》对虚拟产权的监管:合规框架下的渐进式创新
  • 前端开发者快速理解Spring Boot项目指南
  • nav2 基于插件的控制 + pp_controller
  • 机器学习中核心评估指标(准确率、精确率、召回率、F1分数)
  • Node.js的Transform 流
  • iOS打开开发者模式
  • STM32与树莓派通信
  • Elasticsearch、Solr 与 OpenSearch 搜索引擎方案对比分析及选型建议
  • 二分查找-35.搜索插入位置-力扣(LeetCode)
  • 基于NSD8389评估板快速测试电子膨胀阀
  • 「日拱一码」034 机器学习——插值处理