.NET 幫助

LazyCache C#(它如何為開發者工作)

發佈 2024年8月13日
分享:

緩存是在軟體開發中透過將常被訪問的數據儲存在記憶體或更快的儲存媒介中來提升性能的一項基礎技術。 在 C# 中,LazyCache是一個流行的程式庫,簡化了線程安全的快取實現,使開發人員更容易在其應用程式中有效利用快取處理高負載場景。

什麼是 LazyCache?

LazyCache是一個底層的快取提供者庫,用於.NET/ ASP.NET Core應用程式,它提供簡單且直觀的API來快取數據。 它作為 NuGet 套件提供,且可以輕鬆整合到 C# 專案中。 LazyCache 的主要目標是簡化緩存實作,並使用雙重鎖定快取模式來減少管理緩存資訊所需的樣板代碼。

LazyCache 的主要功能:

  1. 簡單 API: LazyCache 提供一個簡單的 API 來新增、檢索和移除快取項目。 開發人員可以快速將快取整合到其應用程式或網路服務呼叫中,而不需要處理複雜的快取機制。

  2. 自動過期: LazyCache 支援根據可配置的過期策略自動過期快取項目。 開發人員可以指定快取項目的到期時間,LazyCache會從快取資料中移除已過期的項目。

  3. 記憶體內快取: LazyCache 預設將快取項目存儲在記憶體中,非常適合需要快速訪問快取數據的情境。 記憶體內快取確保快取資料存取的低延遲和高吞吐量。

  4. 線程安全操作: LazyCache 提供線程安全的操作來新增、檢索和移除緩存項。 這確保多個執行緒可以同時存取快取,而不會有資料毀損或不一致的風險。

  5. 擴展性: LazyCache的設計具有擴展性,允許開發人員根據他們的具體需求自訂快取行為。 它提供了實現自定義快取策略的掛鉤,例如分佈式快取或具有持久性的快取。

    如何在C#中使用LazyCache:

    由於 LazyCache 具有直觀的 API,在 C# 中使用它非常簡單。 下面是一個基本範例,展示如何使用 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()方法擷取與指定鍵相關的快取資料("資料鍵")如果存在。 如果數據未快取,提供的委派(從資料庫中提取數據())執行以獲取數據,然後將其緩存以供將來使用。

IronPDF 介紹

LazyCache C#(它如何為開發人員工作):圖1 - IronPDF

IronPDF是一個強大的 C# PDF 函式庫,允許在 .NET 專案中生成、編輯和提取 PDF 文件的內容。 以下是一些主要功能:

  1. HTML 轉換為 PDF

    • 將 HTML、CSS 和 JavaScript 內容轉換為 PDF 格式。

    • 使用 Chrome 渲染引擎來生成像素完美的 PDF。

    • 從 URLs、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 來實例化。此延遲快取服務管理快取數據的存儲和檢索。
  • Cache Key:唯一識別碼("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 脫穎而出,作為一個強大且多功能的 C# 函式庫,用於在 .NET 應用程式中處理 PDF 文件。 其強大的功能包括創建、編輯、渲染 HTML 至 PDF,以及以程式方式操作 PDF。 具有通过加密和数字签名进行安全文件处理的功能,IronPDF使开发人员能够高效地管理和自定义 PDF 工作流程,使其成为 C# 开发中各种文档管理和生成任务的宝贵工具。

< 上一頁
FluentEmail C#(開發人員如何使用)
下一個 >
DuckDB C#(對開發人員的運作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >