.NET 9 新增 多级缓存 HybridCache

科技   2024-12-25 08:03   日本  

HybridCache是什么

在 .NET 9 中,Microsoft 将 HybridCache 带入了框架体系。

HybridCache 是一种新的缓存模型,设计用于封装本地缓存和分布式缓存,使用者无需担心选择缓存类型,从而优化性能和维护效率。

实际上,HybridCache 基于 IDistributedCache 提供的接口和操作,但增加了一些其他的特性,如封装两类不同缓存库(本地和分布),支持标签删除(Tag-based Cache Eviction)和约束选项。

需要注意的是,HybridCache仍处于preview阶段。


HybridCache 与 IDistributedCache 的区别

IDistributedCache:

  1. 仅支持分布式缓存,如 Redis、SQL Server、MemoryCache。
  2. 选择依赖于目标缓存和管理设备。
  3. 不支持标签删除,只能基于键值操作。

HybridCache:

  1. 支持封装本地和分布式缓存,在读取时优先读取本地缓存,如本地不存在,再读取分布式。
  2. 支持标签删除,通过指定标签管理缓存内容。
  3. 选项更加精简,支持自动化操作和选项约束。


HybridCache 的好处

  1. 性能优化:

     本地缓存速度超过分布式,使用 HybridCache 可以减少读取分布缓存库时的延迟。
  2. 精简化工程:

     使用者不需再自行核实选择哪个缓存,增加了工程效率。
  3. 标签管理:

     缓存标签记录不同类型数据,便于分类管理和删除缓存。
  4. 安全性:

     支持选项约束,使缓存操作更严格,防止错误使用和内容亏失。


代码示例

以下代码展示如何使用 HybridCache:

1. 添加缓存服务
var builder = WebApplication.CreateBuilder(args);
// 注册 HybridCache 服务builder.Services.AddHybridCache();
// 注册 Redis 缓存服务,为 HybridCache 提供分布式缓存builder.Services.AddStackExchangeRedisCache(options =>{    options.Configuration = builder.Configuration.GetConnectionString("RedisConnectionString");});
builder.Services.AddControllers();
2. 实现接口操作

读取缓存

[HttpGet("GetCache")]public async Task<string[]> Get(){    return await _cache.GetOrCreateAsync(        "a-1"async cancel => await Task.FromResult(Summaries)    );}

删除缓存

[HttpGet("DeleteCache")]public async Task<boolDelete(){    await _cache.RemoveAsync("a-1");    return true;}

通过标签读取缓存

[HttpGet("GetCacheByTag")]public async Task<string[]> GetCacheByTag(){    var tags = new List<string> { "tag1""tag2""tag3" };    var entryOptions = new HybridCacheEntryOptions    {        Expiration = TimeSpan.FromMinutes(1),        LocalCacheExpiration = TimeSpan.FromMinutes(1)    };    return await _cache.GetOrCreateAsync(        "a-1"async cancel => await Task.FromResult(Summaries),        entryOptions, tags    );}

通过标签删除缓存

[HttpGet("DeleteCacheByTag")]public async Task<boolDeleteCacheByTag(){    var tags = new List<string> { "tag1" };    await _cache.RemoveByTagAsync(tags);    return true;}

小结

.NET 9 的 HybridCache 提供了一种便捷且高效的缓存解决方案,将本地缓存和分布式缓存无缝结合,为开发者简化了缓存逻辑,同时提供了更多高级功能,如标签管理和选项约束。

通过代码示例可以看出,HybridCache 的操作直观且易于实现,非常适合现代应用场景。

如果你正在使用 .NET 9,尝试将 HybridCache 应用于你的项目中,体验其高效与简洁!

需要注意的是,HybridCache仍处于preview阶段。

关注获取技术分享

新一代智能化应用
人工智能是一门认知科学,而新一代的智能化应用是一个系统工程。智能应用程序是 人工智能驱动的应用程序,可转变用户的工作效率、自动化流程并获得见解
 最新文章