C# Cache 快取設置功能

C#中,快取(Caching)是一種常用的技術,用來暫時存儲資料,以便於快速訪問已經被處理過的資料。快取可以顯著減少對資料來源(如資料庫或是網路服務)的重複查詢,提升應用程序的性能和響應速度。

C#中,快取(Caching)是一種常用的技術,用來暫時存儲資料,以便於快速訪問已經被處理過的資料。快取可以顯著減少對資料來源(如資料庫或是網路服務)的重複查詢,提升應用程序的性能和響應速度。

 

快取(Cache)功能



using System;

using System.Runtime.Caching;



public class CacheHelper : IDisposable

{

    private readonly MemoryCache _cache;



    /// <summary>

    /// CacheHelper 建構函式。初始化 MemoryCache 實例。

    /// </summary>

    public CacheHelper()

    {

        _cache = MemoryCache.Default;

    }



    /// <summary>

    /// 將資料加入快取。

    /// </summary>

    /// <param name="key">快取鍵。</param>

    /// <param name="value">要快取的值。</param>

    /// <param name="expiration">選擇性的過期時間。預設為 1 分鐘。</param>

    public void Add(string key, object value, DateTimeOffset? expiration = null)

    {

        // 如果快取中已經存在相同鍵,則直接返回,避免重複加入。

        if (_cache.Contains(key)) return;



        // 如果提供了過期時間,使用提供的過期時間;否則,預設為 1 分鐘後過期。

        var cacheItemPolicy = new CacheItemPolicy();

        cacheItemPolicy.AbsoluteExpiration = expiration ?? DateTimeOffset.Now.AddMinutes(1);



        // 將值加入快取。

        _cache.Add(key, value, cacheItemPolicy);

    }



    /// <summary>

    /// 從快取中獲取資料。

    /// </summary>

    /// <typeparam name="T">要獲取的資料類型。</typeparam>

    /// <param name="key">快取鍵。</param>

    /// <param name="defaultValue">選擇性的預設值。如果鍵不存在,將返回此值。</param>

    /// <returns>從快取中獲取的資料,或是預設值(如果鍵不存在)。</returns>

    public T Get<T>(string key, T defaultValue = default(T))

    {

        // 如果快取中存在指定鍵,則返回對應的值;否則,返回預設值。

        if (_cache.Contains(key))

            return (T)_cache.Get(key);

        return defaultValue;

    }



    /// <summary>

    /// 從快取中移除資料。

    /// </summary>

    /// <param name="key">要移除的快取鍵。</param>

    public void Remove(string key)

    {

        _cache.Remove(key);

    }



    /// <summary>

    /// 釋放 CacheHelper 使用的資源。

    /// </summary>

    public void Dispose()

    {

        _cache.Dispose();

    }

}