Verwendung mit C#

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

  1. Lokalen Memcached‑Dienst starten, Standardport: 11211
  2. In Visual Studio ein .NET‑Framework‑Konsolenprojekt erstellen
  3. 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ärprotokoll Binary umschaltbar
  • minPoolSize/maxPoolSize: Minimale und maximale Anzahl an Verbindungen im Socket‑Pool
  • address/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

MethodeBeschreibung
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.config funktioniert 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#

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert