BCVP.BOOK 是BlogCore的快速操作手册指南,列举了BlogCore常见的23个基本知识点,没有冗余的讲解,通过直接地、快速地对每个知识点做分步说明,方便初学者快速使用,或者老手查漏补缺!
可以结合ASP.NET8.0视频,快速掌握所有知识点:
https://www.bilibili.com/video/BV13g4y1Z7in
框架已经将缓存集成到了官方的IDistributedCache分布式缓存接口,可以直接使用内存缓存和分布式缓存。
默认使用内存缓存,开启Redis开关以后,使用分布式缓存。
一、相关的依赖注入配置
builder.Services.AddCacheSetup();
相关参数设置
"Redis": {
"Enable": false,//是否开启redis缓存
"ConnectionString": "127.0.0.1:6379",//可以配置密码
"InstanceName": "" //前缀
},
两种缓存机制统一封装,并二次封装到了ICache接口。
/// <summary>
/// 统一注册缓存
/// </summary>
/// <param name="services"></param>
public static void AddCacheSetup(this IServiceCollection services)
{
var cacheOptions = App.GetOptions<RedisOptions>();
if (cacheOptions.Enable)
{
// 配置启动Redis服务,虽然可能影响项目启动速度,但是不能在运行的时候报错,所以是合理的
services.AddSingleton<IConnectionMultiplexer>(sp =>
{
//获取连接字符串
var configuration = ConfigurationOptions.Parse(cacheOptions.ConnectionString, true);
configuration.ResolveDns = true;
return ConnectionMultiplexer.Connect(configuration);
});
services.AddSingleton<ConnectionMultiplexer>(p => p.GetService<IConnectionMultiplexer>() as ConnectionMultiplexer);
//使用Redis
services.AddStackExchangeRedisCache(options =>
{
options.ConnectionMultiplexerFactory = () => Task.FromResult(App.GetService<IConnectionMultiplexer>(false));
if (!cacheOptions.InstanceName.IsNullOrEmpty()) options.InstanceName = cacheOptions.InstanceName;
});
services.AddTransient<IRedisBasketRepository, RedisBasketRepository>();
}
else
{
//使用内存
services.AddMemoryCache();
services.AddDistributedMemoryCache();
}
services.AddSingleton<ICaching, Caching>();
}
二、使用方式
1、通过ICache的二次封装,直接注入ICache即可。
private readonly ICaching _caching;
public CacheManageController(ICaching caching)
{
_caching = caching;
}
/// <summary>
/// 获取全部缓存
/// </summary>
/// <returns></returns>
[ ]
public async Task<MessageModel<List<string>>> Get()
{
return Success(await _caching.GetAllCacheKeysAsync());
}