Utilisation en C#

EnyimMemcached ‑ Utilisation en C#

1. Présentation de la bibliothèque

EnyimMemcached est la bibliothèque cliente .NET officielle et largement utilisée pour Memcached, compatible avec .NET Framework et .NET. Elle est maintenue par Attila Kiskó, s’installe via NuGet et se connecte à Memcached avec le protocole texte ou binaire.

Remarque : la version récente d’EnyimMemcached est publiée sous le paquet NuGet Enyim.Caching

2. Préparation de l’environnement

  1. Lancer le service Memcached local, port par défaut : 11211
  2. Créer un projet console .NET Framework dans Visual Studio
  3. Rechercher et installer le paquet NuGet : EnyimMemcached (identifiant : Enyim.Caching)

3. Configuration complète App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
  </startup>

  <!-- Enregistrer la section de configuration au préalable -->
  <configSections>
    <sectionGroup name="enyim.com">
      <section name="memcached"
               type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
  </configSections>

  <!-- Paramètres de connexion Memcached -->
  <enyim.com>
    <memcached protocol="Text">
      <!-- Adresse du serveur Memcached -->
      <servers>
        <add address="127.0.0.1" port="11211" />
      </servers>
      <!-- Paramètres du pool de sockets -->
      <socketPool minPoolSize="10" 
                  maxPoolSize="20" 
                  connectionTimeout="00:00:10"
                  deadTimeout="00:02:00" />
    </memcached>
  </enyim.com>
</configuration>Langage du code : HTML, XML (xml)

Explication des paramètres :

  • protocol="Text" : utilise le protocole texte Memcached, peut passer au protocole binaire Binary
  • minPoolSize/maxPoolSize : nombre minimal et maximal de connexions du pool de sockets
  • address/port : adresse hôte et port du serveur Memcached

4. Exemple d’utilisation (application console)

using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;

namespace ConsoleApplication1
{
    class Program
    {
        // Client Memcached singleton (réutiliser globalement, éviter les instanciations répétées)
        private static readonly MemcachedClient uniqueInstance = new MemcachedClient();

        static void Main(string[] args)
        {
            // StoreMode.Set : écrase si la clé existe, crée une entrée sinon
            uniqueInstance.Store(StoreMode.Set, "site", "foxdevelop.com");

            // Récupérer une valeur cache de type chaîne
            string value = uniqueInstance.Get<string>("site");
            Console.WriteLine(value);

            Console.Read();
        }
    }
}Langage du code : JavaScript (javascript)

API courantes

MéthodeFonction
Store(StoreMode.Set, key, value)Écrire dans le cache (écrasement)
Store(StoreMode.Add, key, value)Écrire seulement si la clé n’existe pas
Get<T>(key)Lire une valeur cache générique
Remove(key)Supprimer une entrée du cache
GetCas(key)Lecture atomique CAS pour les traitements concurrents

La configuration classique avec App.config ne fonctionne qu’avec .NET Framework ;
Pour .NET Core/.NET 6+, préférez la configuration dans le code sans fichier XML.

Configuration dans le code pour .NET Core/.NET6 (sans 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);Langage du code : JavaScript (javascript)

Vous pouvez tester ce code sur .NET Core et les versions récentes de .NET

Utilisation en C#

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *