.NET 帮助

LazyCache C#(开发人员工作原理)

发布 2024年八月13日
分享:

缓存是软件开发中的一项基本技术,通过将频繁访问的数据存储在内存或速度更快的存储介质中来提高性能。 在 C# 中、LazyCache是一种流行的库,可简化线程安全缓存的实现,使开发人员更容易在其应用程序中有效地利用缓存来处理大负载场景。

**什么是 LazyCache?

LazyCache 是 .NET/ ASP.NET Core 应用程序的底层缓存提供程序库,为缓存数据提供了简单直观的 API。 它以 NuGet 软件包的形式提供,可轻松集成到 C# 项目中。 LazyCache 的主要目标是简化缓存实施,减少使用双锁缓存模式管理缓存信息所需的模板代码。

LazyCache 的主要功能:

  1. 简单的应用程序接口: LazyCache 为添加、检索和删除缓存项提供了简单明了的应用程序接口。 开发人员可以快速将缓存集成到他们的应用程序或网络服务调用中,而无需处理复杂的缓存机制。

  2. 自动过期: LazyCache 支持根据可配置的过期策略自动过期缓存项。 开发人员可以指定缓存项目的过期时间,LazyCache 会从缓存数据中删除过期项目。

  3. 内存缓存: LazyCache 默认将缓存项存储在内存中,因此适用于需要快速访问缓存数据的场景。 内存缓存可确保缓存数据访问的低延迟和高吞吐量。

  4. 线程安全操作: LazyCache 为添加、检索和删除缓存项提供线程安全操作。 这样可以确保多个线程可以同时访问缓存,而不会出现数据损坏或不一致的风险。

  5. 可扩展性: LazyCache 的设计具有可扩展性,允许开发人员根据自己的具体要求定制缓存行为。 它提供了实施自定义缓存策略的钩子,如分布式缓存或带持久性的缓存。

    如何在 C# 中使用 LazyCache:

    在 C# 中使用 LazyCache 非常简单,这要归功于其直观的 API。 下面是一个基本示例,演示如何使用 LazyCache 来缓存方法调用的结果:

using LazyCache;
public class DataService
{
// private readonly IAppCache cache
    private readonly IAppCache _cache;
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }
    private string FetchDataFromDatabase()
    {
        // Simulate fetching data from a database
        return "Cached Data";
    }
}
using LazyCache;
public class DataService
{
// private readonly IAppCache cache
    private readonly IAppCache _cache;
    public DataService(IAppCache cache)
    {
        _cache = cache;
    }
    public string GetData()
    {
        return _cache.GetOrAdd("dataKey", () =>
        {
            // Simulate expensive operation such as database calls
            return FetchDataFromDatabase();
        });
    }
    private string FetchDataFromDatabase()
    {
        // Simulate fetching data from a database
        return "Cached Data";
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

在此示例中,DataService 类使用 LazyCache 缓存 GetData 的结果。()方法。 GetOrAdd()方法检索与指定键关联的缓存数据("dataKey")如果存在的话。 如果数据没有缓存,所提供的委托(从数据库获取数据())将执行以获取数据,然后缓存以供将来使用。

IronPDF 简介

LazyCache C#(对于开发人员的工作原理):图1 - IronPDF

IronPDF是一个功能强大的 C# PDF 库,可在 .NET 项目中生成、编辑和提取 PDF 文档中的内容。 以下是一些主要特点:

  1. HTML 转换为 PDF**:

    • 将 HTML、CSS 和 JavaScript 内容转换为 PDF 格式。

    • 使用 Chrome 渲染引擎制作像素完美的 PDF。

    • 从 URL、HTML 文件或 HTML 字符串生成 PDF。
  2. 图像和内容转换

    • 将图像转换成 PDF 或从 PDF 转换成图像。

    • 从现有 PDF 文件中提取文本和图像。

    • 支持各种图像格式。
  3. 编辑和处理

    • 设置 PDF 的属性、安全性和权限。

    • 添加数字签名。

    • 编辑元数据和修订历史。
  4. 跨平台支持

    • 适用于 .NET Core(8、7、6、5 和 3.1+), .NET 标准(2.0+)和 .NET Framework(4.6.2+).

    • 兼容 Windows、Linux 和 macOS。

    • 在 NuGet 上提供,便于安装。

使用 IronPDF 和 LazyCache 生成 PDF 文档

首先,使用 Visual Studio 创建一个控制台应用程序,如下所示。

LazyCache C#(开发人员如何工作):图 2 - 控制台应用程序

提供项目名称。

LazyCache C#(为开发人员设计的工作原理):图 3 - 项目配置

提供 .NET 版本。

LazyCache C#(开发人员的工作方式):图 4 - 目标框架

安装 IronPDF 软件包。

LazyCache C#(对开发人员的工作原理):图5 - IronPDF

安装 LazyCache 软件包,添加缓存方法调用。

LazyCache C#(它如何为开发人员工作):图6 - LazyCache

using LazyCache;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";
            // Create the cache service using caching logic
            IAppCache cache = new CachingService();
            content += "<p>IAppCache cache = new CachingService();</p>";
            var cacheKey = "uniqueKey";           
            content += "<p>string cachedValue = cache.GetOrAdd(cacheKey, expensiveMethod);</p>";
            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () => {
                var pdf = renderer.RenderHtmlAsPdf(content);
                // Export to a file or Stream
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");
                return content;
            };
            // Get the cached value or add it if it doesn't exist
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);
            Console.WriteLine(cachedValue);
        }
    }
}
using LazyCache;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CodeSample
{
    internal class LazyCacheDemo
    {
        public static void Execute()
        {
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo LazyCache and IronPDF</h1>";
            content += "<h2>Create CachingService</h2>";
            // Create the cache service using caching logic
            IAppCache cache = new CachingService();
            content += "<p>IAppCache cache = new CachingService();</p>";
            var cacheKey = "uniqueKey";           
            content += "<p>string cachedValue = cache.GetOrAdd(cacheKey, expensiveMethod);</p>";
            // Define a factory method to generate the cacheable data
            Func<string> expensiveLongRunMethod = () => {
                var pdf = renderer.RenderHtmlAsPdf(content);
                // Export to a file or Stream
                pdf.SaveAs("AwesomeLazyCacheAndIronPdf.pdf");
                return content;
            };
            // Get the cached value or add it if it doesn't exist
            string cachedValue = cache.GetOrAdd(cacheKey, expensiveLongRunMethod);
            Console.WriteLine(cachedValue);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码解释

  • 建立渲染器:创建一个 ChromePdfRenderer 实例来处理 HTML 内容到 PDF 格式的转换。
  • 定义内容:HTML 内容("

    演示 LazyCache 和 IronPDF

    ", "

    创建 CachingService

    ")准备就绪。 这些内容将被渲染成 PDF 格式并缓存起来,以便重复使用。
  • 创建缓存服务:缓存服务(IAppCache)我们使用 LazyCache 的缓存服务(CachingService)对 LazyCache 进行实例化。该懒惰缓存服务管理缓存数据的存储和检索。
  • 缓存密钥:唯一标识符(“uniqueKey”)将指定一个译员来代表缓存的 PDF 内容。
  • 定义昂贵的方法:工厂方法(昂贵的长时间运行方法)定义为生成可缓存数据。 该方法调用 ChromePdfRenderer 将 HTML 内容渲染为 PDF。 翻译后的 PDF 将以字符串的形式保存和返回。
  • 获取或添加到缓存:调用服务的 GetOrAdd 方法可检索与 cacheKey 相关联的缓存值。 如果缓存中不存在该值,则会调用 expensiveLongRunMethod 进行计算,将其存储到缓存中并返回。 如果值已经缓存,则直接返回。
  • 输出:缓存的 PDF 内容(作为字符串)打印到控制台(Console.WriteLine(缓存值))展示检索缓存数据。

输出

LazyCache C#(为开发人员工作原理):图7 - 控制台输出

PDF

LazyCache C#(对开发者的作用):图8 - PDF输出

IronPDF 许可(可试用)

IronPdf 软件包需要许可证才能运行和生成 PDF。 在访问软件包之前,在应用程序的开头添加以下代码。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

提供试用许可证在 IronPDF 的试用许可证页面上.

结论

LazyCache 通过提供简单明了的 API 和缓存项的自动过期功能,简化了 C# 应用程序中的缓存实施。 通过将 LazyCache 集成到您的项目中,您可以有效地缓存频繁访问的数据,减少延迟,并以原子化和整洁的方式优化资源利用率,从而提高性能。 无论您是在构建 Web 应用程序、API 还是服务,LazyCache 都可以成为提高 C# 应用程序性能和可扩展性的宝贵工具。

另一方面,IronPDF 作为在 .NET 应用程序中处理 PDF 文档的功能强大、用途广泛的 C# 库脱颖而出。 其强大的功能包括创建、编辑、将 HTML 渲染为 PDF 以及以编程方式操作 PDF。 IronPDF 具有通过加密和数字签名进行安全文档处理的功能,使开发人员能够高效地管理和定制 PDF 工作流程,是 C# 开发中执行各种文档管理和生成任务的重要工具。

< 前一页
FluentEmail C#(开发者如何使用)
下一步 >
DuckDB C#(开发人员如何使用)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >