2025年ceph 内存缓存(cefsharp缓存)

ceph 内存缓存(cefsharp缓存)分布式缓存是由多个应用服务器共享的缓存 通常作为访问它的应用服务器的外部服务进行维护 分布式缓存可以提高 ASP NET Core 应用的性能和可伸缩性 尤其是当应用由云服务或服务器场托管时 与其他将缓存数据存储在单个应用服务器上的缓存方案相比 分布式缓存具有多个优势 当分发缓存数据时 数据 在多个服务器的请求之间保持一致 一致性 在进行服务器重启和应用部署后仍然有效

大家好,我是讯享网,很高兴认识大家。



分布式缓存是由多个应用服务器共享的缓存,通常作为访问它的应用服务器的外部服务进行维护。 分布式缓存可以提高 ASP.NET Core 应用的性能和可伸缩性,尤其是当应用由云服务或服务器场托管时。

与其他将缓存数据存储在单个应用服务器上的缓存方案相比,分布式缓存具有多个优势。

当分发缓存数据时,数据:

  • 在多个服务器的请求之间保持一致(一致性)
  • 在进行服务器重启和应用部署后仍然有效。
  • 不使用本地内存。

分布式缓存配置是特定于实现的。 本文介绍如何配置 SQL Server 和 Redis 分布式缓存。 还提供第三方实现,例如 NCache(GitHub 上的 NCache)。 无论选择哪种实现,应用都将使用 接口与缓存进行交互。

查看或下载示例代码(如何下载)

为所使用的分布式缓存提供程序添加包引用:

  • 对于 Redis 分布式缓存,Microsoft.Extensions.Caching.StackExchangeRedis。
  • 对于 SQL Server,Microsoft.Extensions.Caching.SqlServer。
  • 对于 NCache 分布式缓存,NCache.Microsoft.Extensions.Caching.OpenSource。

接口提供以下方法来处理分布式缓存实现中的项:

  • 、:如果在缓存中找到,则接受字符串键并以 数组的形式检索缓存项。
  • 、:使用字符串键将项(作为 数组)添加到缓存。
  • 、:根据键刷新缓存中的项,重置其可调到期超时(如果有)。
  • 、:根据字符串键删除缓存项。

在 中注册 实现。 本主题中所介绍的框架提供的实现包括:

  • 分布式 Redis 缓存
  • 分布式内存缓存
  • 分布式 SQL Server 缓存
  • 分布式 NCache 缓存
  • 分布式 Azure CosmosDB 缓存

建议生产应用使用分布式 Redis 缓存,因为它是性能最高的。 有关详细信息,请参阅建议。

Redis 是一种开放源代码内存中数据存储,通常用作分布式缓存。 可以为 Azure 托管的 ASP.NET Core 应用配置 Azure Cache for Redis,并使用 Azure Cache for Redis 进行本地开发。

应用会使用 实例通过调用 来配置缓存实现。 对于输出缓存,请使用 。

  1. 创建 Azure Cache for Redis。
  2. 将主连接字符串 (StackExchange.Redis) 复制到配置。
    • 本地开发:使用机密管理器保存连接字符串。
    • Azure:将连接字符串保存在安全存储中,例如 Azure 密钥保管库

以下代码启用 Azure Cache for Redis:

 
  
讯享网

上述代码假定主连接字符串 (StackExchange.Redis) 以键名 保存在配置中。

有关详细信息,请参阅 Azure Cache for Redis。

有关本地 Redis 缓存的替代方法的讨论,请参阅此 GitHub 问题。

分布式内存缓存 () 是框架提供的 实现,用于将项存储在内存中。 分布式内存缓存不是真正的分布式缓存。 缓存项由应用实例存储在运行该应用的服务器上。

分布式内存缓存是一个有用的实现:

  • 在开发和测试场景中。
  • 当在生产环境中使用单个服务器并且内存消耗不重要时。 实现分布式内存缓存会抽象缓存的数据存储。 如果需要多个节点或容错,它允许在未来实现真正的分布式缓存解决方案。

当应用在 的开发环境中运行时,示例应用使用分布式内存缓存:

讯享网

分布式 SQL Server 缓存实现 () 允许分布式缓存使用 SQL Server 数据库作为其后备存储。 要在 SQL Server 实例中创建 SQL Server 缓存项表,可以使用 工具。 该工具使用指定的名称和架构来创建表。

通过运行 命令在 SQL Server 中创建一个表。 提供 SQL Server 实例 ()、数据库 ()、架构(例如 )和表名(例如 ):

 

将记录一条消息以指示该工具已成功:


讯享网

讯享网

通过 工具创建的表具有以下架构:

SqlServer 缓存表

示例应用在 的非开发环境中实现 :

 

NCache 是在 .NET 和 .NET Core 中以原生方式开发的开放源代码内存中分布式缓存。 NCache 既可以在本地工作,也可配置为在 Azure 或其他托管平台上运行的 ASP.NET Core 应用的分布式缓存群集。

要在本地计算机上安装和配置 NCache,请参阅Windows 入门指南(.NET 和 .NET Core)。

若要配置 NCache,请执行以下操作:

  1. 安装 NCache 开放源代码 NuGet。
  2. 在 client.ncconf 中配置缓存群集。
  3. 将下列代码添加到 :
讯享网

通过使用 接口,Azure Cosmos DB 可以在 ASP.NET Core 中用作会话状态提供程序。 Azure Cosmos DB 是一个完全托管的 NoSQL 和关系数据库,适用于新式应用程序开发,为任务关键型应用程序提供高可用性、可伸缩性和低延迟的数据访问。

安装 Microsoft.Extensions.Caching.Cosmos NuGet 包后,配置 Azure Cosmos DB 分布式缓存,如下所示:

重用现有客户端

配置分布式缓存的最简单方法是重用现有的 Azure Cosmos DB 客户端。 在这种情况下,当释放提供程序时,不会释放 实例。

 

创建新客户端

或者,实例化新客户端。 在这种情况下,当释放提供程序时,将释放 实例。

讯享网

要使用 接口,请在应用中请求 实例。 该实例由依赖项注入 (DI) 提供。

当示例应用启动时,会将 注入到 。 当前时间是使用 缓存的(有关详细信息,请参阅通用主机:IHostApplicationLifetime):

 

示例应用将 注入 ,以供索引页面使用。

每次加载索引页面时,都会检查缓存中 中的缓存时间。 如果缓存时间尚未过期,则会显示该时间。 如果自上次访问缓存时间(上次加载此页面)以来已过去 20 秒,则页面显示“缓存时间已过期”

选择“重置缓存时间”按钮,即可将缓存时间更新为当前时间。 该按钮将触发 处理程序方法。

讯享网

对于具有内置实现的 实例,无需使用单一实例或范围内的生存期

也可按需创建 实例,而不是使用 DI,但在代码中创建实例会使代码更难测试并且违反了显式依赖项原则。

在确定适合你的应用的** 实现时,请考虑以下几点:

  • 现有基础结构
  • 性能要求
  • 成本
  • 团队经验

缓存解决方案通常依靠内存中存储来提供对缓存数据的快速检索,但内存是一种有限的资源并且扩展成本很高。 仅将常用数据存储在缓存中。

对于大多数应用来说,与 SQL Server 缓存相比,Redis 缓存可提供更高的吞吐量和更低的延迟。 但建议进行基准测试来确定缓存策略的性能特征。

当将 SQL Server 用作分布式缓存后备存储时,如果将同一数据库用于缓存以及应用的普通数据存储和检索,这可能会对两者的性能产生负面影响。 建议对分布式缓存后备存储使用专用的 SQL Server 实例。

  • Azure 上的 Redis 缓存
  • Azure 上的 SQL 数据库
  • 用于 Web 场中 NCache 的 ASP.NET Core IDistributedCache 提供程序(GitHub 上的 NCache)
  • Microsoft.Extensions.Caching.Cosmos 的存储库自述文件
  • ASP.NET Core 中的内存中缓存
  • 使用 ASP.NET Core 中的更改令牌检测更改
  • ASP.NET Core 中的响应缓存
  • ASP.NET Core 中的响应缓存中间件
  • ASP.NET Core MVC 中的缓存标记帮助程序
  • ASP.NET Core 中的分布式缓存标记帮助程序
  • 在 Web 场中托管 ASP.NET Core


小讯
上一篇 2025-04-17 22:02
下一篇 2025-05-09 19:35

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/143732.html