Memcached com o Windows e o .NET

Existe alguém que já implementa o memcached para uso em produção no ambiente Windows? Como muitos blogs que já li, não é recomendado executar o memcached no Windows especialmente para uso em produção, por exemplo, executando o memcached no Windows .

E mais uma coisa, qual cliente memcached que é bom usar com c # e .net 3.5? Eu encontrei muitos alternativos, como provedores Memcached @ Codeplex , Beitmemcached e provedor memcached @ Sourceforge

Por que você precisa executar o memcached no Windows? É um assunto caro em um ambiente de produção.

Se o seu código precisar ser executado em um ambiente Windows, obtenha um cliente memcached do Windows e converse com uma máquina memcached baseada em * nix.

Em um ambiente de produção que executa o memcached no Server 2003 ou 2008, significa que você obtém licenças para todas as checkboxs. O Linux oferecerá todos os benefícios do OSS. TCO aumentará linearmente com o memcached no Windows

Editar:

Tem sido em torno de 1,5 anos desde que escrevi esta resposta e muitas coisas mudaram desde então. Você tem que tomar conhecimento, especialmente quando alguém como Dustin comenta.
Então aqui está como você pode obter o memcached no windows rodando. Faça o download do memcached for windows do Couchbase (anteriormente Northscale) .
Normalmente, se você planeja executar o memcached na mesma máquina de produção, você deve iniciá-lo na memory limitada, ou seja, definir o máximo que o memcached de memory pode usar.

c: \ Arquivos de programas \ memcached> memcached.exe -m 128.

Aqui memcached é executado com um máximo de 128 mb de uso. Você não quer que o memcached ocupe toda a memory do seu servidor.

No momento em que você decidiu expandir o memcached, você precisará considerar o que eu disse anteriormente. Além disso, comprima seus valores nas combinações de valores-chave. Os servidores da Web normalmente consomem muito pouco uso de CPU (2-3%) e a compactação traz muito valor à rede em comparação com o uso da CPU. Se você está muito preocupado com a compression normal, tente LZO

Estou surpreso que ninguém aqui ainda tenha que mencionar o Redis – é um dos armazenamentos de dados de valor-chave mais rico em resources e mais rápido (110.000 SET por segundo em uma checkbox de nível de input), com suporte rico a estrutura de dados para strings, conjuntos, listas, conjuntos classificados e hashes.

Embora o Windows não seja uma plataforma oficialmente suportada, ele funciona perfeitamente no Windows, com todos os testes sendo aprovados. Eu tenho o Windows constrói (usando Cygwin) disponível aqui: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

Ele também tem ligações de clientes para quase todas as linguagens de programação em uso atualmente. Eu mantenho um rico cliente Open Source C # Redis com suporte a API nativa para qualquer tipo de C # POCO, suporte a transactions e gerenciadores de clientes Thread-safe que estão prontos para serem colocados em qualquer IOC em: https://github.com/ServiceStack/ServiceStack. Redis

Como o Velocity não existia na época, usei uma porta do memcached para o Windows para a empresa em que trabalho, Skiviez. Só existe principalmente para fornecer um cache centralizado para vários processos de trabalho na mesma máquina. Está funcionando há 18 meses em um site de comércio eletrônico que vê um uso modesto (~ 18.500 accesss / dia). O cliente que usei foi o Enyim integrado como um provedor de cache para o iBATIS.NET. Esse cliente parece funcionar bem o suficiente; os clientes memcached não são muito complicados para começar.

Se eu tivesse que fazê-lo novamente, provavelmente verificaria o Velocity se eu estivesse comprometido em permanecer no Windows para minha solução de armazenamento em cache distribuído. Mas está funcionando agora, então não vou tocá-lo.

(Além disso: Desde então, eu neguei a maior parte da necessidade do cache adicionando determinadas colunas Cache* a tabelas-chave no database que são atualizadas por uma tarefa agendada todas as noites. Isso acabou colocando muito menos pressão sobre os resources, a batida inicial no tempo da CPU, consultando o database para a tensão subsequencial na disponibilidade da memory, mantendo os resultados armazenados em cache no memcached, além de torná-lo muito mais explícito no código quando uma versão em cache dos dados está sendo acessada. Tenho certeza que você tem muitas razões para usar um cache distribuído, mas sempre vale a pena dar um passo atrás e questionar se você realmente precisa dele!)

Eu não sei em que projeto você está trabalhando, mas você gostaria de dar uma olhada no projeto Microsoft Velocity Da página:

“Velocity” é uma plataforma de cache de aplicativos na memory distribuída para o desenvolvimento de aplicativos escalonáveis ​​e de alto desempenho. “Velocity” pode ser usado para armazenar em cache qualquer object CLR (common language runtime) e fornece access por meio de APIs simples. Os principais aspectos do “Velocity” são o desempenho do cache distribuído, escalonadamente e disponibilidade.

Eu vi um par de demo e parece que tem integração muito boa com o framework .net.

O problema com as APIs do cliente é que você ainda precisa ter uma instância do memcached sendo executada em outra checkbox, preferencialmente, como você observou, usando a pilha LAMP. Usar velocidade significa que você ainda vai estar na mesma pilha e há uma integração mais forte na plataforma .net.

Dito isto, se você quiser usar velocidade como um cache para outros aplicativos .net, você pode ter que escrever sua própria API para expor os dados de velocidade para consumo.

A velocidade é um pouco mais envolvida para administrar, mas é muito mais poderosa que o memcached. Eu não sou anti-memcached, nem um pouco, é ótimo. Mas, seguindo em frente, novos projetos que são puramente baseados em .NET são loucos para não alavancar o Velocity, mesmo em seu estado inédito atual.

dê uma olhada no SharedCache . seu código aberto, fácil de usar e muito confiável.

sistema de cache de object de memory distribuída de alto desempenho, genérico por natureza, mas destinado a acelerar a Web dinâmica e / ou ganhar aplicativos, aliviando a carga do database. Não se esqueça de nos visitar em http://www.sharedcache.com

O problema com as APIs do cliente é que você ainda precisa ter uma instância do memcached sendo executada em outra checkbox, preferencialmente, como você observou, usando a pilha LAMP.

Não é de todo verdade. A pilha LAMP (Linux, Apache, MySQL, PHP) não é necessária para executar o Memcached. Eu atualmente prefiro memcached sobre velocidade até que a velocidade esteja fora do CTP. Eu brinquei com a velocidade um pouco, mas achei muito pesado. Eu sigo essa coisa toda do KISS, você sabe … mantenha isso simples. Nada mais simples que o cache … Obtenha (chave) … Coloque (chave, valor) … Destrua (Chave).

Como um adendo às menções do Velocity acima, isso foi lançado pela Microsoft como parte do AppFabric . Mais detalhes aqui.

Confira as várias questões que envolvem o AppFabric e o Cache aqui no StackOverflow.

Eu sei que estou um pouco atrasado para a festa aqui, e já há toneladas de boas respostas.

Usamos o Membase no Windows Server com grande sucesso. É 100% compatível com o Memcached, e tem um bom instalador de GUI e um servidor de configuração web para construí-lo. É extremamente fácil de administrar.

Há também outros resources NoSQL incluídos, que estão fora do escopo deste segmento, mas vale a pena olhar. Eles têm uma licença gratuita para desenvolvimento, teste e servidores de produção (limitados).

Downloads Membase

Essa mesma página tem um Windows Install para Memcached apenas, se você não quiser nenhum dos resources extras no Membase.

Por favor, siga os links abaixo para ver a solução para esta questão.

Eu poderia implementar o memcached para uso em produção no ambiente Windows.

http://www.codeproject.com/Articles/96698/Implementing-Distributed-Caching-using-Memcached http://www.deanhume.com/Home/BlogPost/object-caching—-net-4/37 http : //latebound.blogspot.com/2008/10/using-memcached-from-c.html

Se você estiver interessado em executar um cliente memcached no Windows, há dois servidores de código aberto adicionais que podem fazer o trabalho. Ambos implementam o protocolo padrão do servidor memcached e são gravados em Java para serem executados no Windows.

  • jmemcached
  • quickcached