当前位置: 首页 > 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.lryc.cn/news/595593.html

相关文章:

  • 【黑马SpringCloud微服务开发与实战】(四)微服务02
  • 前端之学习后端java小白(一)之SDKMAN及helloword
  • 如何用 LUKS 和 cryptsetup 为 Linux 配置加密
  • 【爬虫】05 - 爬虫攻防
  • 前后端分离项目进阶1---前端
  • 耐看点播网页入口 - 追最新电视剧,看热门电影|官网
  • c语言 进阶 动态内存管理
  • 3x3矩阵教程
  • 一次 POI 版本升级踩坑记录
  • 二维码扫描登录流程详解
  • 对理性决策模型的剖析及应用路径
  • Java学习 ------BIO模型
  • 【VASP】VASP 机器学习力场(MLFF)实战
  • C++ <继承> 详解
  • js迭代器
  • JAVA序列化知识小结
  • 我国《数字中国规划》对虚拟产权的监管:合规框架下的渐进式创新
  • stream event
  • 前端,demo操作,增删改查,to do list小项目
  • C++ 分配内存释放内存
  • Anaconda 路径精简后暴露 python 及工具到环境变量的配置记录 [二]
  • 【C#】C# 事件 两次 -= 会怎么样?
  • C# 结构体
  • C# 转换(is和as运算符)
  • XSS学习总结
  • Unreal ARPG笔记
  • 《画布角色的双重灵魂:解析Canvas小游戏中动画与碰撞的共生逻辑》
  • Spring Boot注解详解
  • 影刀 RPA:批量修改 Word 文档格式,高效便捷省时省力
  • 通俗易懂卷积神经网络(CNN)指南