¿Alguien ya implementó Memcached para uso de producción en el entorno de Windows? Debido a que muchos blogs que he leído, no se recomienda ejecutar memcached en Windows, especialmente para uso en producción, por ejemplo, ejecutar memcached en Windows .
Y una cosa más, ¿qué cliente Memcached es bueno para usar con c # y .net 3.5? Encontré muchos proveedores alternativos como Memcached Providers @ Codeplex , Beitmemcached y Memcached Providers @ Sourceforge
c#
.net-3.5
memcached
distributed-caching
Funky81
fuente
fuente
Respuestas:
¿Por qué necesita ejecutar Memcached en Windows? Es un asunto caro en un entorno de producción.
Si su código necesita ejecutarse en un entorno Windows, obtenga un cliente memcached de Windows y hable con una máquina memcached basada en * nix.
En un entorno de producción que ejecuta Memcached en Server 2003 o 2008, significaría que obtiene licencias para todas esas cajas. Linux le ofrecerá todos los beneficios de OSS. El TCO aumentará linealmente con memcached en Windows
Editar:
Han pasado alrededor de 1,5 años desde que escribí esta respuesta y muchas cosas han cambiado desde entonces. Tienes que prestar atención, especialmente cuando alguien como Dustin comenta.
Así que así es como puede ejecutar memcached en Windows. Descargue memcached para Windows desde Couchbase (anteriormente Northscale) .
Por lo general, si planea ejecutar Memcached en la misma máquina de producción, querrá iniciarlo en una memoria limitada, es decir, defina la memoria máxima que Memcached puede usar.
Aquí memcached se ejecuta con un uso máximo de 128 MB. No desea que Memcached ocupe toda la memoria de su servidor web.
En el momento en que decidió escalar Memcached, deberá considerar lo que dije antes. Comprima además sus valores en las combinaciones de valores clave. Los servidores web suelen consumir muy poco uso de CPU (2-3%) y la compresión aporta mucho valor a la red en comparación con el uso de CPU. Si está demasiado preocupado por la compresión normal, pruebe LZO
fuente
Me sorprende que nadie de aquí haya mencionado a Redis : es uno de los almacenes de datos de valor clave más ricos en funciones y más rápidos (110,000 SET por segundo en una caja de Linux de nivel de entrada) con soporte de estructura de datos enriquecido para cadenas conjuntos, listas, conjuntos ordenados y hashes.
Aunque Windows no es una plataforma con soporte oficial, funciona perfectamente bajo Windows con todas las pruebas aprobadas. Tengo compilaciones de Windows (usando Cygwin) disponibles aquí: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
También tiene enlaces de cliente para casi todos los lenguajes de programación que se utilizan en la actualidad. Mantengo un rico cliente de código abierto C # Redis con soporte de API nativo para cualquier tipo de C # POCO, soporte de transacciones y administradores de clientes seguros para subprocesos que están listos para ser colocados en cualquier IOC en: https://github.com/ServiceStack/ServiceStack. Redis
fuente
Como Velocity no existía en ese momento, utilicé un puerto memcached a Windows para la empresa para la que trabajo, Skiviez. Principalmente solo existe para proporcionar una caché centralizada para múltiples procesos de trabajo en la misma máquina. Ha estado funcionando bien alrededor de 18 meses en un sitio de comercio electrónico que tiene un uso modesto (~ 18,500 visitas / día). El cliente que usé fue Enyim integrado como proveedor de caché para iBATIS.NET. Ese cliente parece funcionar bastante bien; Los clientes de Memcached tampoco son muy complicados para empezar.
Si tuviera que hacerlo de nuevo, probablemente miraría Velocity si estuviera comprometido a permanecer en Windows para mi solución de almacenamiento en caché distribuido. Pero ahora está funcionando, así que no voy a tocarlo.
(Aparte: desde entonces, negué la mayor parte de la necesidad del caché agregando ciertas
Cache*
columnas a las tablas clave en la base de datos que se actualizan mediante una tarea programada todas las noches. Esto terminó poniendo mucho menos esfuerzo en los recursos, desde el inicio golpeó en el tiempo de la CPU al consultar la base de datos sobre la tensión subsecuente en la disponibilidad de memoria al mantener los resultados almacenados en caché en memcached. También lo hizo mucho más explícito en el código cuando se accede a una versión en caché de los datos en versión instantánea. Estoy seguro de que tiene muchas razones para usar una caché distribuida, pero siempre vale la pena dar un paso atrás y preguntarse si realmente la necesita o no).fuente
No sé en qué proyecto está trabajando, pero le gustaría echar un vistazo al proyecto Microsoft Velocity de la página:
He visto un par de demostraciones y parece que tiene una buena integración con .net framework.
El problema con las API del cliente es que aún debe tener una instancia de memcached ejecutándose en otra caja en algún lugar de manera preferible, como ha notado, usando la pila LAMP. El uso de la velocidad significa que seguirá funcionando en la misma pila y habrá una integración más estrecha en la plataforma .net.
Dicho esto, si desea usar la velocidad como caché para otras aplicaciones .net, es posible que tenga que escribir su propia API para exponer los datos de velocidad para su consumo.
fuente
Velocity es un poco más complicado de administrar, pero es mucho más poderoso que Memcached. No soy anti-memcached, en lo más mínimo, es genial. Pero en el futuro, los proyectos nuevos que se basan exclusivamente en .NET son una locura por no aprovechar Velocity, incluso en su estado actual inédito.
fuente
Mira esto SharedCache . su código abierto, fácil de usar y muy confiable.
fuente
No es del todo cierto. La pila LAMP (Linux, Apache, MySQL, PHP) no es necesaria para ejecutar Memcached. Actualmente prefiero memcached sobre la velocidad hasta que la velocidad esté fuera de CTP. He jugado un poco con la velocidad, pero lo encontré demasiado difícil de manejar. Sigo todo eso de KISS, ya sabes ... mantenlo simple. Nada más simple que almacenar en caché ... Get (key) ... Put (key, value) ... Destroy (Key).
fuente
Como anexo a las menciones de Velocity anteriores, Microsoft lo publicó como parte de AppFabric . Más detalles aquí.
Consulte las diversas preguntas relacionadas con AppFabric y Cache aquí en StackOverflow.
fuente
Sé que llego un poco tarde a la fiesta aquí y ya hay toneladas de buenas respuestas.
Hemos utilizado Membase en Windows Server con gran éxito. Es 100% compatible con Memcached, y tiene un buen instalador de GUI y un servidor de configuración web construido. Es extremadamente fácil de administrar.
También se incluyen otras características NoSQL, que están fuera del alcance de este hilo, pero que vale la pena considerar. Tienen una licencia gratuita para servidores de desarrollo, pruebas y producción (limitada).
Descargas de membase
Esa misma página tiene una instalación de Windows solo para Memcached, si no desea ninguna de las funciones adicionales en Membase.
fuente
Siga los enlaces que se mencionan a continuación para ver la solución a esta pregunta.
Podría implementar memcached para uso de producción en el entorno de 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
fuente
Si está interesado en ejecutar un cliente Memcached en Windows, hay dos servidores de código abierto adicionales que pueden hacer el trabajo. Ambos implementan el protocolo de servidor memcached estándar y están escritos en Java para que se ejecuten en Windows.
fuente