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
- Inicie o serviço local do Memcached, porta padrão:
11211 - Crie um projeto de console do .NET Framework no Visual Studio
- 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árioBinaryminPoolSize/maxPoolSize: quantidade mínima e máxima de conexões do pooladdress/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étodo | Funçã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.configfunciona 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#
Previous: Utilizar na linha de comandos
Next: Operações CRUD