概念什么是缓存,在项目中,为了提高数据的读取速度 , 我们会对不经常变更但访问频繁的数据做缓存处理,我们常用的缓存有:
- 本地缓存
- 内存缓存:IMemoryCache
- 分布式缓存
- Redis: StackExchange.Redis
MasaFramework
为我们提供了以下能力- IDistributedCacheClient: 分布式缓存
- Masa.Contrib.Caching.Distributed.StackExchangeRedis: 基于StackExchange.Redis实现的分布式缓存
- IMultilevelCacheClient: 多级缓存
- Masa.Contrib.Caching.MultilevelCache: 基于内存缓存以及分布式缓存实现的多级缓存 , 支持监控缓存变更,分布式缓存更新后相应的内存缓存也会同步更新,避免命中过时的内存缓存导致获取错误的数据 , 同时也尽可能的将多个副本的内存缓存保持同步
- 前提条件:安装.NET 6.0
- 新建ASP.NET Core 空项目
Assignment.DistributedCache
,并安装Masa.Contrib.Caching.Distributed.StackExchangeRedis
dotnet new web -o Assignment.DistributedCachecd Assignment.DistributedCachedotnet add package Masa.Contrib.Caching.Distributed.StackExchangeRedis --version 0.6.0-rc.5
- 配置
Redis
配置信息
{"RedisConfig":{"Servers":[{"Host":"localhost","Port":6379}],"DefaultDatabase":3,"ConnectionPoolSize":10}}
- 注册分布式缓存,并使用
Redis
缓存,修改Program.cs
var builder = WebApplication.CreateBuilder(args);//注册分布式缓存builder.Services.AddDistributedCache(distributedCacheOptions =>{distributedCacheOptions.UseStackExchangeRedisCache();//使用分布式Redis缓存, 默认使用本地`RedisConfig`下的配置});
使用分布式缓存的数据来源默认为IOptionsMonitor<RedisConfigurationOptions>
,如果本地未正确在RedisConfig
节点配置缓存信息,且项目中也没有通过其它方式配置使其支持选项模式,则默认使用的Redis配置为: 地址: localhost、端口:6379 , 密码:空,数据库:db0
- 新建
User
类 , 用于接收用户信息
public class User{public string Name { get; set; }public int Age { get; set; }}
- 如何使用
IDistributedCacheClient
, 修改Program.cs
// 设置缓存app.MapPost("/set/{id}", async (IDistributedCacheClient distributedCacheClient, [FromRoute] string id, [FromBody] User user) =>{await distributedCacheClient.SetAsync(id, user);return Results.Accepted();});// 获取缓存app.MapGet("/get/{id}", async (IDistributedCacheClient distributedCacheClient, [FromRoute] string id) =>{var value = https://www.huyubaike.com/biancheng/await distributedCacheClient.GetAsync(id);return Results.Ok(value);});
多级缓存- 新建ASP.NET Core 空项目
Assignment.DistributedCache
,并安装Masa.Contrib.Caching.MultilevelCache
、Masa.Contrib.Caching.Distributed.StackExchangeRedis
dotnet new web -o Assignment.MultilevelCachecd Assignment.MultilevelCachedotnet add package Masa.Contrib.Caching.MultilevelCache --version 0.6.0-rc.5dotnet add package Masa.Contrib.Caching.Distributed.StackExchangeRedis --version 0.6.0-rc.5
- 注册多级缓存,并使用分布式
Redis
缓存,修改Program.cs
var builder = WebApplication.CreateBuilder(args);//注册多级缓存builder.Services.AddMultilevelCache(distributedCacheOptions =>{distributedCacheOptions.UseStackExchangeRedisCache();//使用分布式Redis缓存});
- 新建
User
类,用于接收用户信息
public class User{public string Name { get; set; }public int Age { get; set; }}
- 如何使用
IMultilevelCacheClient
,修改Program.cs
// 设置缓存app.MapPost("/set/{id}", async (IMultilevelCacheClient multilevelCacheClient, [FromRoute] string id, [FromBody] User user) =>{await multilevelCacheClient.SetAsync(id, user);return Results.Accepted();});// 获取缓存app.MapGet("/get/{id}", async (IMultilevelCacheClient multilevelCacheClient, [FromRoute] string id) =>{var value = https://www.huyubaike.com/biancheng/await multilevelCacheClient.GetAsync(id);return Results.Ok(value);});
测试借助Postman
或者Swagger
或者使用其它API测试工具,分别测试设置缓存与获取缓存,以验证分布式缓存以及多级缓存是可以正常使用的 。友情提示:检查Redis缓存,找到刚刚你配置的缓存,确定下它的存储结果是否与你想象的一致!!推荐阅读
- 【番外篇】Rust环境搭建+基础开发入门+Rust与.NET6、C++的基础运算性能比较
- disco diffusionAI绘画保姆级入门教程
- 一 JPA入门学习集合springboot
- 原神室内派考古入门任务怎么做
- 七 SpringBoot - Redis 缓存
- Flink WordCount入门
- 一篇文章带你了解网页框架——Vue简单入门
- 绝地求生新手如何快速入门(绝地求生新手入门教学怎么跳过)
- 【C++】spdlog光速入门,C++logger最简单最快的库
- 小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED