EnyimMemcached C# 使用教學
一、程式庫簡介
EnyimMemcached 是適用於 .NET Framework/.NET 的 Memcached 主流官方 .NET 用戶端程式庫,由 Attila Kiskó 維護,透過 NuGet 安裝,支援文字協定(Text)或二進位協定連接 Memcached 伺服器。
注意:新版 EnyimMemcached 的 NuGet 套件名稱為 Enyim.Caching
二、環境準備
- 啟動本機 Memcached 服務,預設連接埠:
11211 - 使用 Visual Studio 建立 .NET Framework 主控台專案
- 於 NuGet 搜尋安裝套件:
EnyimMemcached(套件識別:Enyim.Caching)
三、App.config 完整設定
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<!-- 必須先註冊設定節點 -->
<configSections>
<sectionGroup name="enyim.com">
<section name="memcached"
type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
</sectionGroup>
</configSections>
<!-- Memcached 連線設定 -->
<enyim.com>
<memcached protocol="Text">
<!-- Memcached伺服器位址 -->
<servers>
<add address="127.0.0.1" port="11211" />
</servers>
<!-- 連線集區參數 -->
<socketPool minPoolSize="10"
maxPoolSize="20"
connectionTimeout="00:00:10"
deadTimeout="00:02:00" />
</memcached>
</enyim.com>
</configuration>Code language: HTML, XML (xml)
設定說明:
protocol="Text":使用Memcached文字協定,亦可切換為Binary二進位協定minPoolSize/maxPoolSize:連線集區最小、最大連線數address/port:Memcached伺服器位址與連接埠
四、使用範例(主控台程式)
using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;
namespace ConsoleApplication1
{
class Program
{
// 單例Memcached用戶端(建議全域共用,避免重複建立執行個體)
private static readonly MemcachedClient uniqueInstance = new MemcachedClient();
static void Main(string[] args)
{
// StoreMode.Set:索引鍵存在則覆寫,不存在則新增
uniqueInstance.Store(StoreMode.Set, "site", "foxdevelop.com");
// 讀取字串型別快取
string value = uniqueInstance.Get<string>("site");
Console.WriteLine(value);
Console.Read();
}
}
}Code language: JavaScript (javascript)
常用API一覽
| 方法 | 用途 |
|---|---|
Store(StoreMode.Set, key, value) | 寫入快取(覆蓋原有資料) |
Store(StoreMode.Add, key, value) | 僅索引鍵不存在時才寫入 |
Get<T>(key) | 泛型方式讀取快取資料 |
Remove(key) | 刪除指定快取項目 |
GetCas(key) | CAS原子讀取,適用並發場景 |
傳統
App.config僅支援 .NET Framework;
.NET Core/.NET 6+ 建議改用程式碼設定,不再依賴XML設定檔。
.NET Core/.NET6 程式碼設定(不使用App.config)
var config = new MemcachedClientConfiguration();
config.Servers.Add(new System.Net.IPEndPoint(System.Net.IPAddress.Loopback, 11211));
config.Protocol = MemcachedProtocol.Text;
var client = new MemcachedClient(config);Code language: JavaScript (javascript)
你可以自行在 .NET Core 以及新版 .NET 環境測試執行
C# 使用教學
Previous: 於命令列介面執行使用
Next: CRUD操作