缓存在 App 中的应用

缓存(cache)工作原理
说到缓存,我们来看下百度百科的介绍:
-
缓存(cache),原始意义是指访问速度比一般 随机存取存储器(RAM) 快的一种 高速存储器,通常它不像系统主存那样使用
DRAM技术,而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。- 动态随机存取存储器(
Dynamic Random Access Memory,DRAM) - 静态随机存取存储器(
Static Random-Access Memory,SRAM)
- 动态随机存取存储器(
-
目的:提高数据存取速度(缓存性能优化
万金油)。
在应用系统中通常会使用到缓存(cache)技术,其中应用系统多级缓存的工作原理大概介绍如下:

说明:在 App 系统中存在多级缓存时,按顺序读取,从一级缓存(Level 1 Cache,简称L1 Cache)逐级往下获取。
项目环境准备
上一篇文章 我们介绍了 .net6 平台的 asp.net core webapi 框架中如何使用 ABP vNext 框架,本篇文章我们继续使用上次创建的 Demo.Abp.WebApplication1 项目,新增如下 NuGet 包文件:
- Volo.Abp.Caching,本地缓存;
- Volo.Abp.Caching.StackExchangeRedis,分布式缓存(Redis);
说明:Volo.Abp.Caching.StackExchangeRedis 包已经包含 Volo.Abp.Caching 包。
一、添加 NuGet 包文件
Demo.Abp.WebApplication1 项目中所有的 nuget packages 文件:

说明:在 上篇文章 中,ABP vNext 的这些 nuget packages 文件还未发布 v6.0.0 正式版,生产环境中推荐使用正式稳定版。关于 asp.net core webapi 项目如何遵循 Module(模块化)改造的具体细节,此处不再详细介绍。
添加完成上图的 nuget packages 后,查看 Demo.Abp.WebApplication1.csproj 完整的工程项目文件,如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AspNetCore" Version="6.0.0" />
<PackageReference Include="Volo.Abp.Caching" Version="6.0.0" />
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="6.0.0" />
<PackageReference Include="Volo.Abp.Swashbuckle" Version="6.0.0" />
</ItemGroup>
</Project>
项目结构如下:

二、改造 ApiController 类及相关文件
此处为了模拟业务操作从数据库获取数据,在 WeatherForecastController 控制器中添加一个获取数据的方法:
// 模拟数据库获取数据
private async Task<WeatherForecast> GetWeatherForecastAsync(Guid guid)
{
_logger.LogDebug($"{
DateTime.Now:G},查询数据库数据...");
var index = Random.Shared.Next(-2, 3);
var data = new WeatherForecast
{
Id = Guid.NewGuid(), // WeatherForecast 模型新增 Id 字段
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
};
return await Task.FromResult(data);
}
WeatherForecast 模型新增 Id 字段。
namespace Demo.Abp.WebApplication1;
public class WeatherForecast
{
public Guid Id {
get; set; }
public DateTime Date {
get; set; }
public int TemperatureC {
get; set; }
public int TemperatureF => 32 + (int)(

本文介绍ABP框架下的缓存技术实现,包括本地缓存和分布式缓存的配置与使用方法,通过具体示例展示了如何在.NET Core Web API项目中应用这两种缓存模式。
最低0.47元/天 解锁文章
590

被折叠的 条评论
为什么被折叠?



