.NET 帮助

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

发布 2024年八月13日
分享:

缓存是软件开发中提高性能的基本技术,通过将经常访问的数据存储在内存或更快的存储介质中。在C#中, LazyCache 是一个流行的库,可简化线程安全缓存的实现,使开发人员能够在高负载场景中有效利用缓存。

LazyCache是什么?

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

LazyCache的主要特性:

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

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

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

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

  5. 可扩展性: LazyCache设计为可扩展的,允许开发人员根据其特定需求自定义缓存行为。它提供了实现自定义缓存策略的挂钩,例如分布式缓存或持久化缓存。

如何在C#中使用LazyCache:

由于其直观的API,在C#中使用LazyCache非常简单。下面是一个基本示例,演示如何使用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实例化的。这项懒缓存服务管理缓存数据的存储和检索。
  • 缓存键: 唯一标识符 (“uniqueKey”) 被分配用于表示缓存的PDF内容。
  • 定义高成本方法:工厂方法 (昂贵的长时间运行方法) 被定义为生成可缓存的数据。此方法调用ChromePdfRenderer将HTML内容渲染为PDF。生成的PDF随后被保存并作为字符串返回。
  • 获取或添加到缓存:调用服务的GetOrAdd方法以检索与cacheKey关联的缓存值。如果缓存中不存在该值,则调用expensiveLongRunMethod来计算它,将其存储在缓存中并返回。如果该值已经被缓存,则直接返回。
  • 输出:缓存的PDF内容 (作为字符串) 打印到控制台 (Console.WriteLine(缓存值))展示检索缓存数据。

输出

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

PDF

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

IronPDF Licensing (可试用)

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

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

试用许可证可用 这里.

结论

LazyCache 通过提供一个简单的 API 和自动过期的缓存项简化了在 C# 应用程序中的缓存实现。通过将 LazyCache 整合到你的项目中,你可以通过高效缓存频繁访问的数据来提升性能,减少延迟,并以原子的和整洁的方式优化资源利用。无论你是在构建 Web 应用程序、API 还是服务,LazyCache 都可以成为增强 C# 应用程序性能和可扩展性的有力工具。

另一方面,IronPDF 作为一个强大且多功能的 C# 库,在 .NET 应用程序中处理 PDF 文档方面表现突出。其强大的功能包括创建、编辑、将 HTML 渲染为 PDF 以及以编程方式操作 PDF。通过加密和数字签名来确保文档处理的安全性,IronPDF 使开发人员能够高效地管理和定制 PDF 工作流程,使其成为 C# 开发中广泛的文档管理和生成任务的有力工具。

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

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

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