Utilização com C#

EnyimMemcached: Utilização com C#

1. Sobre a biblioteca

EnyimMemcached é uma das principais bibliotecas cliente .NET oficiais para o Memcached, voltada para .NET Framework e .NET. Mantida por Attila Kiskó, ela é instalada via NuGet e se conecta ao serviço Memcached usando o protocolo texto ou protocolo binário.

Observação: Nas versões mais novas do EnyimMemcached, o pacote NuGet se chama Enyim.Caching

2. Preparação do ambiente

  1. Inicie o serviço local do Memcached, porta padrão: 11211
  2. Crie um projeto de console do .NET Framework no Visual Studio
  3. Procure e instale o pacote NuGet: EnyimMemcached (identificador do pacote: Enyim.Caching)

3. Configuração completa do App.config

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

  <!-- É obrigatório registrar as seções de configuração primeiro -->
  <configSections>
    <sectionGroup name="enyim.com">
      <section name="memcached"
               type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
  </configSections>

  <!-- Configuração de conexão com o Memcached -->
  <enyim.com>
    <memcached protocol="Text">
      <!-- Endereço do servidor Memcached -->
      <servers>
        <add address="127.0.0.1" port="11211" />
      </servers>
      <!-- Definições do pool de conexões -->
      <socketPool minPoolSize="10" 
                  maxPoolSize="20" 
                  connectionTimeout="00:00:10"
                  deadTimeout="00:02:00" />
    </memcached>
  </enyim.com>
</configuration>Code language: HTML, XML (xml)

Explicação das configurações:

  • protocol="Text": utiliza o protocolo texto do Memcached, pode ser alterado para o protocolo binário Binary
  • minPoolSize/maxPoolSize: quantidade mínima e máxima de conexões do pool
  • address/port: endereço e porta do servidor Memcached

4. Exemplo de uso (aplicação de console)

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

namespace ConsoleApplication1
{
    class Program
    {
        // Cliente Memcached singleton (reutilize globalmente, evite criar instâncias repetidamente)
        private static readonly MemcachedClient uniqueInstance = new MemcachedClient();

        static void Main(string[] args)
        {
            // StoreMode.Set: sobrescreve se a chave existir, cria um novo registro se não existir
            uniqueInstance.Store(StoreMode.Set, "site", "foxdevelop.com");

            // Recupera valor de cache do tipo string
            string value = uniqueInstance.Get<string>("site");
            Console.WriteLine(value);

            Console.Read();
        }
    }
}Code language: JavaScript (javascript)

APIs mais comuns

MétodoFunção
Store(StoreMode.Set, key, value)Gravar no cache (sobrescreve)
Store(StoreMode.Add, key, value)Grava apenas quando a chave não existe
Get<T>(key)Leitura genérica do cache
Remove(key)Remover item do cache
GetCas(key)Leitura atômica CAS, para cenários com concorrência

A forma tradicional com App.config funciona apenas no .NET Framework;
Para .NET Core/.NET 6+, prefira fazer a configuração diretamente no código, sem depender de arquivos XML.

Configuração via código .NET Core/.NET6 (sem 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 language: JavaScript (javascript)

Você pode testar esse exemplo em ambientes .NET Core e versões recentes do .NET

Utilização com C#

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *