.NET 9 中的 多级缓存 HybridCache示例详解

 更新时间:2024年12月26日 10:39:43   作者:快乐非自愿  
HybridCache是.NET9中引入的一种新的缓存模型,它封装了本地缓存和分布式缓存,简化了缓存操作并提供了标签删除和约束选项,本文给大家介绍.NET 9 中的 多级缓存 HybridCache,感兴趣的朋友一起看看吧

HybridCache是什么

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

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

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

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

HybridCache 与 IDistributedCache 的区别

IDistributedCache:

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

HybridCache:

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

HybridCache 的好处

  • 性能优化: 本地缓存速度超过分布式,使用 HybridCache 可以减少读取分布缓存库时的延迟。
  • 精简化工程: 使用者不需再自行核实选择哪个缓存,增加了工程效率。
  • 标签管理: 缓存标签记录不同类型数据,便于分类管理和删除缓存。
  • 安全性: 支持选项约束,使缓存操作更严格,防止错误使用和内容亏失。

代码示例

以下代码展示如何使用 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<bool> Delete()
{
    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<bool> DeleteCacheByTag()
{
    var tags = new List<string> { "tag1" };
    await _cache.RemoveByTagAsync(tags);
    return true;
}

小结

.NET 9 的 HybridCache 提供了一种便捷且高效的缓存解决方案,将本地缓存和分布式缓存无缝结合,为开发者简化了缓存逻辑,同时提供了更多高级功能,如标签管理和选项约束。通过代码示例可以看出,HybridCache 的操作直观且易于实现,非常适合现代应用场景。

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

文章转载自:chester·chen

原文链接:https://www.cnblogs.com/chenyishi/p/18626831

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

到此这篇关于.NET 9 中的 多级缓存 HybridCache的文章就介绍到这了,更多相关.NET 多级缓存 HybridCache内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • .NET Core授权失败自定义响应信息的操作方法

    .NET Core授权失败自定义响应信息的操作方法

    这篇文章主要介绍了.NET Core授权失败自定义响应信息的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Visual Studio 2017中找回消失的“在浏览器中查看”命令

    Visual Studio 2017中找回消失的“在浏览器中查看”命令

    这篇文章主要为大家详细介绍了如何在Visual Studio 2017中找回消失的“在浏览器中查看”命令,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Entity Framework管理一对一实体关系

    Entity Framework管理一对一实体关系

    本文详细讲解了Entity Framework管理一对一实体关系的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • .net验证码的刷新或局部刷新的方法实例

    .net验证码的刷新或局部刷新的方法实例

    .net验证码的刷新或局部刷新的方法实例,下面是实例,需要的朋友可以参考一下
    2013-03-03
  • linq中的分组操作符

    linq中的分组操作符

    这篇文章介绍了linq中的分组操作符,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • asp.net自定义控件回发数据实现方案与代码

    asp.net自定义控件回发数据实现方案与代码

    在实现asp.net的自定义控件中,若要实现数据的回发或者post数据,那自义控件必须实现IPostBackDataHandler接口, 在该接口中有两个方法一个是LoadPostData,另一个是RaisePostDataChangedEvent,需要的朋友可以了解下
    2012-12-12
  • asp.net 脏字典过滤问题 用正则表达式来过滤脏数据

    asp.net 脏字典过滤问题 用正则表达式来过滤脏数据

    asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
    2009-10-10
  • .NetCore实现上传多文件的示例详解

    .NetCore实现上传多文件的示例详解

    本章和大家分享的是.NetCore的MVC框架上传文件的示例,主要讲的内容有:form方式提交上传,ajax上传,ajax提交+上传进度效果,Task并行处理+ajax提交+上传进度,对大家非常有帮助,感兴趣的朋友跟随小编一起学习吧
    2017-04-04
  • ASP.NET的适配器设计模式(Adapter)应用详解

    ASP.NET的适配器设计模式(Adapter)应用详解

    有关设计模式的适配器模式(Adapter)确实不是很好理解理解,接下来将做一个简单的例子简要说明下,感兴趣的朋友可不要错过了哈,希望本文可以帮助到你更好的理解适配器设计模式
    2013-02-02
  • .NET Core中使用Redis与Memcached的序列化问题详析

    .NET Core中使用Redis与Memcached的序列化问题详析

    这篇文章主要介绍了.NET Core中使用Redis与Memcached的序列化问题的相关内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03

最新评论