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
- Inicia el servicio local de Memcached, puerto predeterminado:
11211 - Crea un proyecto de consola de .NET Framework en Visual Studio
- 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 binarioBinaryminPoolSize/maxPoolSize: Número mínimo y máximo de conexiones del pooladdress/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étodo | Descripció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.configsolo 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#
Previous: Uso desde la terminal de comandos
Next: Operaciones CRUD