.NET 9 中的 多级缓存 HybridCache

ops/2024/12/27 10:04:57/
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<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快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构


http://www.ppmy.cn/ops/145065.html

相关文章

Typesense:开源的高速搜索引擎

在当今数据驱动的世界中&#xff0c;高效、快速且智能的搜索能力是任何应用程序和网站成功的关键因素之一。无论是电商平台、内容管理系统还是社交媒体&#xff0c;用户都希望能够迅速找到所需信息。Typesense&#xff0c;作为一款优秀的开源搜索引擎&#xff0c;旨在通过其卓越…

frp 内网穿透

frp 在目前理解是一个提供端口转发的工具。不管是 windows 版本还是 linux 版本都同时提供了 frps 服务端与 frpc 客户端两个应用&#xff0c;分别对应 frps.toml 与 frpc.toml 两个配置文件。 下载地址 服务端 服务端需要有公网ip&#xff0c;接收请求转发到对应的客户端服务…

C语言结构体学习笔记

C语言结构体学习笔记 1、什么是结构体 结构体是一种用户自定义的数据类型&#xff0c;用于将不同类型的数据组合成一个有机整体。 例如&#xff0c;一个学生可以包含以下属性&#xff1a; int num; char name[20]; char sex; int age; char addr[30];这些属性可以通过结构体统…

重温设计模式--代理、中介者、适配器模式的异同

文章目录 1、相同点2、不同点 1、相同点 目的都是为了更好地处理对象之间的关系&#xff1a;这三种模式都是在软件设计中用于处理对象之间的关联和交互&#xff0c;以达到优化系统结构、增强可维护性等目的。它们都在一定程度上隐藏了对象之间的某些细节或者复杂性&#xff0c…

网络安全 | 云计算中的数据加密与访问控制

网络安全 | 云计算中的数据加密与访问控制 一、前言二、云计算概述2.1 云计算的定义与特点2.2 云计算的服务模式2.3 云计算的数据安全挑战 三、数据加密技术在云计算中的应用3.1 对称加密算法3.2 非对称加密算法3.3 混合加密算法 四、云计算中的访问控制模型4.1 基于角色的访问…

K8s DaemonSet的介绍

1. 什么是 DaemonSet&#xff1f; DaemonSet 是 Kubernetes 中的一种控制器&#xff0c;用于确保每个&#xff08;或某些指定的&#xff09;节点上运行一个 Pod 副本。它是为部署守护进程设计的&#xff0c;例如需要在每个节点上运行的任务或工具。 特点&#xff1a; Pod 会随…

Python tkinter写的《电脑装配单》和 Html版 可打印 可导出 excel 文件

Python版 样图&#xff1a; 说明书&#xff1a; markdown # 电脑配置单使用说明书 ## 一、软件简介 电脑配置单是一个用于创建和比较两套电脑配置方案的工具软件。用户可以选择各种电脑配件,输入数量和价格,软件会自动计算总金额,并支持导出和打印配置单。 ## 二、主要功能 1. …

mac 使用 launchctl 实现每次登录系统时 frpc 就会自动启动

测试 测试正常是否可以启动 /Users/zhangbaoxing/SoftWare/frp_0.61.0_darwin_arm64/frpc -c /Users/zhangbaoxing/SoftWare/frp_0.61.0_darwin_arm64/frpc.toml步骤 launchctl 是根据plist文件的信息来启动任务的&#xff0c;所以我们要加一个frp的plist mac系统一般提供两…