Uso con C#

EnyimMemcached: Uso con C#

1. Presentación de la biblioteca

EnyimMemcached es la biblioteca cliente .NET más utilizada y oficial para Memcached, compatible con .NET Framework y .NET. Mantenida por Attila Kiskó, se instala a través de NuGet y se conecta al servicio Memcached mediante el protocolo de texto o el protocolo binario.

Aviso: En versiones nuevas de EnyimMemcached el paquete NuGet se llama Enyim.Caching

2. Preparación del entorno

  1. Inicia el servicio local de Memcached, puerto predeterminado: 11211
  2. Crea un proyecto de consola de .NET Framework en Visual Studio
  3. Busca e instala el paquete de NuGet: EnyimMemcached (identificador del paquete: Enyim.Caching)

3. Configuración completa de App.config

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

  <!-- Hay que registrar primero los nodos de configuración -->
  <configSections>
    <sectionGroup name="enyim.com">
      <section name="memcached"
               type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
  </configSections>

  <!-- Configuración de conexión con Memcached -->
  <enyim.com>
    <memcached protocol="Text">
      <!-- Dirección del servidor Memcached -->
      <servers>
        <add address="127.0.0.1" port="11211" />
      </servers>
      <!-- Parámetros del pool de conexiones -->
      <socketPool minPoolSize="10" 
                  maxPoolSize="20" 
                  connectionTimeout="00:00:10"
                  deadTimeout="00:02:00" />
    </memcached>
  </enyim.com>
</configuration>Lenguaje del código: HTML, XML (xml)

Explicación de los parámetros:

  • protocol="Text": Usa el protocolo de texto de Memcached, puedes cambiarlo por el protocolo binario Binary
  • minPoolSize/maxPoolSize: Número mínimo y máximo de conexiones del pool
  • address/port: Dirección y puerto del servidor Memcached

4. Ejemplo práctico (aplicación de consola)

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

namespace ConsoleApplication1
{
    class Program
    {
        // Cliente Memcached singleton (reutilizar globalmente, evita crear instancias constantemente)
        private static readonly MemcachedClient uniqueInstance = new MemcachedClient();

        static void Main(string[] args)
        {
            // StoreMode.Set: sobrescribe si existe la clave, crea una nueva si no existe
            uniqueInstance.Store(StoreMode.Set, "site", "foxdevelop.com");

            // Leer valor de caché de tipo cadena
            string value = uniqueInstance.Get<string>("site");
            Console.WriteLine(value);

            Console.Read();
        }
    }
}Lenguaje del código: JavaScript (javascript)

API más usadas

MétodoDescripción
Store(StoreMode.Set, key, value)Guardar en caché (sobrescribe)
Store(StoreMode.Add, key, value)Guarda solo cuando la clave no existe
Get<T>(key)Lectura genérica de caché
Remove(key)Eliminar entrada de caché
GetCas(key)Lectura atómica CAS para escenarios de concurrencia

El método tradicional con App.config solo sirve para .NET Framework;
Para .NET Core/.NET 6 o superior se recomienda configurar desde código, sin archivos XML.

Configuración por código para .NET Core/.NET6 (sin 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);Lenguaje del código: JavaScript (javascript)

Puedes probar este código en entornos .NET Core y versiones modernas de .NET

Uso con C#

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *