EnyimMemcached –‑ Verwendung mit C#
1. Bibliotheksübersicht
EnyimMemcached ist die gängige offizielle .NET‑Client‑Bibliothek für Memcached für .NET Framework/.NET. Sie wird von Attila Kiskó gepflegt, wird über NuGet installiert und verbindet sich per Text‑ oder Binärprotokoll mit dem Memcached‑Server.
Hinweis: Die aktuelle Version von EnyimMemcached liegt unter dem NuGet‑Paket Enyim.Caching vor
2. Umgebung einrichten
- Lokalen Memcached‑Dienst starten, Standardport:
11211 - In Visual Studio ein .NET‑Framework‑Konsolenprojekt erstellen
- NuGet‑Paket suchen und installieren:
EnyimMemcached(Paket‑ID: Enyim.Caching)
3. Vollständige App.config‑Konfiguration
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<!-- Konfigurationsabschnitt zuerst registrieren -->
<configSections>
<sectionGroup name="enyim.com">
<section name="memcached"
type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
</sectionGroup>
</configSections>
<!-- Memcached‑Verbindungseinstellungen -->
<enyim.com>
<memcached protocol="Text">
<!-- Memcached‑Serveradresse -->
<servers>
<add address="127.0.0.1" port="11211" />
</servers>
<!-- Socket‑Pool‑Einstellungen -->
<socketPool minPoolSize="10"
maxPoolSize="20"
connectionTimeout="00:00:10"
deadTimeout="00:02:00" />
</memcached>
</enyim.com>
</configuration>Code-Sprache: HTML, XML (xml)
Erläuterung der Konfigurationswerte:
protocol="Text": Verwendung des Memcached‑Textprotokolls, auf das BinärprotokollBinaryumschaltbarminPoolSize/maxPoolSize: Minimale und maximale Anzahl an Verbindungen im Socket‑Pooladdress/port: Host‑Adresse und Port des Memcached‑Servers
4. Anwendungsbeispiel (Konsolen‑App)
using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;
namespace ConsoleApplication1
{
class Program
{
// Singleton‑Memcached‑Client (global wiederverwenden, häufiges Neuerstellen vermeiden)
private static readonly MemcachedClient uniqueInstance = new MemcachedClient();
static void Main(string[] args)
{
// StoreMode.Set: Überschreibt vorhandene Schlüssel, legt neue Einträge an
uniqueInstance.Store(StoreMode.Set, "site", "foxdevelop.com");
// String‑Wert aus dem Cache abrufen
string value = uniqueInstance.Get<string>("site");
Console.WriteLine(value);
Console.Read();
}
}
}Code-Sprache: JavaScript (javascript)
Wichtige APIs
| Methode | Beschreibung |
|---|---|
Store(StoreMode.Set, key, value) | Cache‑Eintrag schreiben (überschreiben) |
Store(StoreMode.Add, key, value) | Nur schreiben, wenn der Schlüssel nicht existiert |
Get<T>(key) | Generisches Auslesen von Cache‑Werten |
Remove(key) | Cache‑Eintrag löschen |
GetCas(key) | CAS‑atomares Lesen für nebenläufige Vorgänge |
Die klassische Konfiguration per
App.configfunktioniert nur mit .NET Framework;
Für .NET Core/.NET 6+ wird die Konfiguration direkt im Code ohne XML‑Datei empfohlen.
Code‑basierte Konfiguration für .NET Core/.NET6 (ohne 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-Sprache: JavaScript (javascript)
Sie können den Code unter .NET Core und neueren .NET‑Versionen ausprobieren
Verwendung mit C#
Previous: Verwendung innerhalb der Kommandozeile
Next: CRUD‑Operationen