Alguém já implementou o memcached para uso em produção no ambiente Windows? Como muitos blogs que li, não é recomendado executar memcached no Windows especialmente para uso de produção, por exemplo, executando memcached no windows .
E mais uma coisa, qual cliente memcached é bom para usar com c # e .net 3.5? Encontrei muitos alternativos, como Memcached Providers @ Codeplex , Beitmemcached e memcached provider @ Sourceforge
c#
.net-3.5
memcached
distributed-caching
Funky81
fonte
fonte
Respostas:
Por que você precisa executar o memcached no Windows? É um assunto caro em um ambiente de produção.
Se seu código precisa ser executado em um ambiente Windows, obtenha um cliente Windows Memcached e converse com uma máquina baseada em memcached * nix.
Em um ambiente de produção executando memcached no Server 2003 ou 2008, isso significa que você obtém licenças para todas essas caixas. O Linux oferecerá a você todos os benefícios do OSS. O TCO aumentará linearmente com o memcached no Windows
Editar:
Já se passou cerca de 1,5 anos desde que escrevi esta resposta e muitas coisas mudaram desde então. Você tem que prestar atenção, especialmente quando alguém como Dustin comenta.
Então, aqui está como você pode obter o memcached no Windows em execução. Baixe o memcached para windows em Couchbase (anteriormente Northscale) .
Normalmente, se você planeja executar o memcached na mesma máquina de produção, deseja iniciá-lo com memória limitada, ou seja, defina o máximo de memória que o memcached pode usar.
Aqui, o memcached é executado com um uso máximo de 128 MB. Você não quer que o memcached ocupe toda a memória do seu servidor web.
No momento em que você decidiu dimensionar o memcached, você precisará considerar o que eu disse antes. Além disso, comprima seus valores nas combinações de valores-chave. Os servidores da Web normalmente consomem muito pouco uso da CPU (2-3%) e a compactação agrega muito valor à rede em comparação ao uso da CPU. Se você está muito preocupado com a compressão normal, tente LZO
fonte
Estou surpreso que ninguém aqui tenha mencionado o Redis - é um dos armazenamentos de dados de valor-chave mais rico em recursos e mais rápido (110.000 SETs por segundo em uma caixa Linux de nível básico) com suporte de estrutura de dados rica 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 passando. Eu tenho compilações do Windows (usando Cygwin) disponíveis aqui: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
Ele também possui vínculos de cliente para quase todas as linguagens de programação em uso hoje. Eu mantenho um cliente C # Redis de código aberto rico com suporte nativo de API para qualquer tipo de C # POCO, suporte a transações e gerenciadores de cliente thread-safe que estão prontos para serem colocados em qualquer IOC em: https://github.com/ServiceStack/ServiceStack. Redis
fonte
Como o Velocity não existia na época, usei uma porta memcached para Windows para a empresa para a qual trabalho, Skiviez. Ele existe principalmente para fornecer um cache centralizado para vários processos de trabalho na mesma máquina. Ele está funcionando bem há cerca de 18 meses em um site de comércio eletrônico que tem uso modesto (aproximadamente 18.500 acessos / dia). O cliente que usei foi o Enyim integrado como provedor de cache para iBATIS.NET. Esse cliente parece funcionar bem; Os clientes memcached também não são muito complicados para começar.
Se eu tivesse que fazer isso de novo, provavelmente olharia para o Velocity se estivesse comprometido em permanecer no Windows para minha solução de cache distribuída. Mas está funcionando agora, então não vou mexer nisso.
(À parte: desde então, neguei a maior parte da necessidade do cache adicionando certas
Cache*
colunas às tabelas-chave no banco de dados que são atualizadas por uma tarefa agendada todas as noites. Isso acabou colocando muito menos pressão sobre os recursos ao redor, desde o início atingido no tempo de CPU ao consultar o banco de dados sobre a pressão subsequencial na disponibilidade de memória, mantendo os resultados armazenados em cache no memcached. Também tornou muito mais explícito no código quando uma versão em cache dos dados está sendo acessada em comparação com um cálculo versão instantânea. Tenho certeza de que você tem muitos motivos para usar um cache distribuído, mas sempre vale a pena dar um passo para trás e questionar se você realmente precisa dele ou não!)fonte
não sei em que projeto você está trabalhando, mas talvez você queira dar uma olhada no projeto Microsoft Velocity da página:
Eu vi alguns demos e parece que tem uma integração muito boa com o framework .net.
O problema com a API do cliente é que você ainda precisa ter uma instância do memcached em execução em outra caixa em algum lugar, de preferência como você observou, usando a pilha LAMP. Usar velocidade significa que você ainda estará executando na mesma pilha e que há uma integração mais estreita em toda a plataforma .net.
Dito isso, se você quiser usar a velocidade como um cache para outros aplicativos .net, poderá ter que escrever sua própria API para expor os dados de velocidade para consumo.
fonte
O Velocity é um pouco mais complexo para administrar, mas é muito, muito mais poderoso do que o memcached. Eu não sou anti-memcached, nem um pouco, é ótimo. Mas, no futuro, novos projetos que são puramente baseados em .NET são loucos para não aproveitar o Velocity, mesmo em seu estado atual não lançado.
fonte
dê uma olhada em SharedCache . seu código-fonte aberto, fácil de usar e muito confiável.
fonte
Não é verdade. A pilha LAMP (Linux, Apache, MySQL, PHP) não é necessária para executar o Memcached. Atualmente, prefiro memcached em vez de velocidade até que a velocidade esteja fora do CTP. Eu brinquei com a velocidade um pouco, mas achei muito difícil. Eu sigo toda essa coisa do KISS, você sabe ... mantenha as coisas simples. Nada mais simples do que armazenar em cache ... Get (key) ... Put (key, value) ... Destroy (Key).
fonte
Como um adendo às menções do Velocity acima, ele foi lançado pela Microsoft como parte do AppFabric . Mais detalhes aqui.
Confira as várias questões envolvendo AppFabric e Cache aqui no StackOverflow.
fonte
Eu sei que estou um pouco atrasado para a festa aqui, e já existem toneladas de boas respostas.
Usamos o Membase no Windows Server com grande sucesso. É 100% compatível com Memcached, e tem um bom instalador GUI e um servidor de configuração web para construí-lo. É extremamente fácil de administrar.
Existem também outros recursos NoSQL incluídos, que estão fora do escopo deste tópico, mas vale a pena dar uma olhada. Eles têm uma licença gratuita para servidores de desenvolvimento, teste e produção (limitada).
Downloads do Membase
Essa mesma página tem um Windows Install para Memcached apenas, se você não quiser nenhum dos recursos extras do Membase.
fonte
Siga os links mencionados abaixo para ver a solução para esta questão.
Eu poderia implementar o memcached para uso em produção em 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
fonte
Se você estiver interessado em executar um cliente memcached no Windows, existem dois servidores de código aberto adicionais que podem fazer o trabalho. Ambos implementam o protocolo de servidor memcached padrão e são escritos em Java para que sejam executados no Windows.
fonte