在 ASP.NET Core 中使用 IDistributedCache
运用 IDistributedCache 在 ASP.NET Core 中 NCache 通过允许在多个应用服务器之间共享缓存数据,提高应用程序的可扩展性和效率。通过实施 ID分布式缓存界面 NCache这样一来,在多个应用服务器上实现高性能缓存和数据完整性就成为可能。
硬件需求
使用本产品前,请确保满足以下先决条件:
- 根据您的应用程序在您的应用程序中安装以下 NuGet 包 NCache 版:
- 缓存必须正在运行。
- 申请必须是 连接到缓存 在执行操作之前。
- 有关 API 详细信息,请参阅: 尝试获取值, 米, 添加NCache分布式缓存.
- 确保要添加的数据是 可序列化.
如何配置 NCache 作为分布式缓存提供程序
使用 NCache 通过 IDistributedCache API中,您需要添加缓存配置。 应用设置.json 您的申请。以下 IDistributedCache 例如添加一个部分 NCacheSettings 它配置缓存名称。 您可以根据您注册的缓存更改名称。
重要提示
确保指定的缓存正在运行。
. . .
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"ExceptionsEnabled": "True"
}
. . .
注意:
为确保操作是故障安全的,建议处理应用程序中的任何潜在异常,如中所述 处理故障.
指定缓存配置后,使用 NCache 提供自定义方法 AddNCacheDistributedCache 方法中 启动文件 设置 NCache 作为存储对象的默认缓存。
public void ConfigureServices(IServiceCollection services)
{
services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
}
NCache 现在是底层缓存 IDistributedCache。 假设我们的数据库包含音乐商店的信息,包括专辑信息、流派、艺术家、订单详细信息等。 我们继续获取专辑的详细信息,该专辑存储为 Album 班级。 以下代码片段尝试根据缓存键获取专辑详细信息。 如果在缓存中找不到指定的项目,则会从数据库中获取该项目并将其存储在缓存中,有效期为 10 分钟。 如果在接下来的 10 分钟内没有对该对象执行任何操作,则该对象将从缓存中过期。 同时,如果从缓存中获取,则作为对象返回 Album.
public async Task<IActionResult> Details(
[FromServices] IDistributedCache cache,
int id)
{
var cacheKey = string.Format("album1", id);
Album album;
object value;
if (!cache.TryGetValue(cacheKey, out value)){
album = await DbContext.Albums
.Where(a => a.AlbumId == id)
.Include(a => a.Artist)
.Include(a => a.Genre)
.FirstOrDefaultAsync();
if (album != null)
{
if (_appSettings.CacheDbResults)
{
// Remove it from cache if not retrieved in last 10 minutes
cache.SetObject(cacheKey, album, new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(10)));
}
}
}
else
{
album = value as Album;
}
if (album == null)
{
return NotFound();
}
return View(album);
}
参见
.NET: Alachisoft.NCache.缓存.分布式 命名空间。