Gibt es bereits jemanden, der memcached für die Produktion in einer Windows-Umgebung implementiert? Da viele Blogs, die ich gelesen habe, nicht empfohlen werden, memcached in Windows auszuführen, insbesondere für die Verwendung in der Produktion, z. B. memcached unter Windows .
Und noch etwas: Welcher zwischengespeicherte Client eignet sich gut für c # und .net 3.5? Ich habe viele Alternativen gefunden, z. B. Memcached Providers @ Codeplex , Beitmemcached und Memcached Provider @ Sourceforge
c#
.net-3.5
memcached
distributed-caching
Funky81
quelle
quelle
Antworten:
Warum müssen Sie memcached unter Windows ausführen? Es ist eine teure Angelegenheit in einer Produktionsumgebung.
Wenn Ihr Code in einer Windows-Umgebung ausgeführt werden muss, holen Sie sich einen Windows-Memcached-Client und sprechen Sie mit einem * nix-basierten Memcached-Computer.
In einer Produktionsumgebung, in der memcached auf Server 2003 oder 2008 ausgeführt wird, erhalten Sie Lizenzen für alle diese Boxen. Linux bietet Ihnen alle OSS-Vorteile. Die Gesamtbetriebskosten steigen linear mit dem unter Windows zwischengespeicherten Speicher
Bearbeiten:
Es ist ungefähr 1,5 Jahre her, seit ich diese Antwort geschrieben habe und seitdem haben sich viele Dinge geändert. Sie müssen es beachten, besonders wenn jemand wie Dustin Kommentare abgibt.
Hier erfahren Sie, wie Sie Memcaching unter Windows ausführen können. Laden Sie memcached für Windows von Couchbase (ehemals Northscale) herunter .
Wenn Sie memcached auf demselben Produktionscomputer ausführen möchten, möchten Sie es normalerweise in begrenztem Speicher starten, dh definieren Sie den maximalen Speicher, den memcached verwenden darf.
Hier läuft memcached mit maximal 128 MB Auslastung. Sie möchten nicht, dass memcached den gesamten Speicher Ihres Webservers belegt.
In dem Moment, in dem Sie sich entschieden haben , memcached zu verkleinern, müssen Sie überlegen, was ich zuvor gesagt habe. Komprimieren Sie zusätzlich Ihre Werte in den Schlüsselwertkombinationen. Webserver verbrauchen normalerweise nur sehr wenig CPU (2-3%), und die Komprimierung bringt im Vergleich zur CPU-Auslastung im gesamten Netzwerk viel Wert. Wenn Sie über die normale Komprimierung zu besorgt sind, versuchen Sie es mit LZO
quelle
Ich bin überrascht, dass hier noch niemand Redis erwähnt hat - es ist eines der funktionsreichsten und schnellsten (110.000 SETs pro Sekunde in einer Linux-Box der Einstiegsklasse) Schlüsselwertspeicher mit umfassender Datenstrukturunterstützung für Zeichenfolgen. Sets, Listen, sortierte Sets und Hashes.
Obwohl Windows keine offiziell unterstützte Plattform ist, läuft es perfekt unter Windows, wenn alle Tests bestanden werden. Ich habe Windows-Builds (mit Cygwin) hier verfügbar: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
Es hat auch Client-Bindungen für fast jede Programmiersprache, die heute verwendet wird. Ich verwalte einen umfangreichen Open Source C # Redis-Client mit nativer API-Unterstützung für alle C # POCO-Typen, Transaktionsunterstützung und Thread-sicheren Client-Manager, die bereit sind, in ein beliebiges IOC unter folgender Adresse abgelegt zu werden: https://github.com/ServiceStack/ServiceStack. Redis
quelle
Da Velocity zu diesem Zeitpunkt noch nicht vorhanden war, habe ich für das Unternehmen, für das ich arbeite, Skiviez, einen zwischengespeicherten Windows-Port verwendet. Es besteht hauptsächlich nur die Bereitstellung eines zentralen Caches für mehrere Arbeitsprozesse auf demselben Computer. Es läuft seit ungefähr 18 Monaten auf einer E-Commerce-Website, die nur in geringem Umfang genutzt wird (~ 18.500 Zugriffe pro Tag). Der von mir verwendete Client war Enyim , der als Cache-Anbieter für iBATIS.NET integriert war. Dieser Kunde scheint gut genug zu funktionieren; Memcached Clients sind auch anfangs nicht sehr kompliziert.
Wenn ich es noch einmal tun müsste, würde ich mir wahrscheinlich Velocity ansehen, wenn ich mich dazu verpflichten würde, für meine verteilte Caching-Lösung unter Windows zu bleiben. Aber es funktioniert jetzt, also werde ich es nicht anfassen.
(Nebenbei: Seitdem habe ich den größten Teil des Cache-Bedarfs negiert, indem ich bestimmte
Cache*
Spalten zu Schlüsseltabellen in der Datenbank hinzugefügt habe , die jeden Abend durch eine geplante Aufgabe aktualisiert werden. Dies hat die Ressourcen von Anfang an viel weniger belastet In der CPU-Zeit wurde die Datenbank nach der nachfolgenden Belastung der Speicherverfügbarkeit abgefragt, indem die zwischengespeicherten Ergebnisse im Speicher gehalten wurden. Dies machte es auch im Code viel expliziter, wenn auf eine zwischengespeicherte Version der Daten zugegriffen wird, im Vergleich zu einer berechneten Version. the-fly-Version. Ich bin sicher, Sie haben viele Gründe, einen verteilten Cache zu verwenden, aber es ist immer einen Versuch wert, einen Schritt zurückzutreten und sich zu fragen, ob Sie ihn wirklich brauchen oder nicht!)quelle
Ich weiß nicht, an welchem Projekt Sie arbeiten, aber vielleicht möchten Sie sich das Microsoft Velocity-Projekt ansehen. Von der Seite:
Ich habe ein paar Demos gesehen und es sieht so aus, als ob es wirklich gut in das .net Framework integriert ist.
Das Problem mit den Client-APIs besteht darin, dass immer noch eine Instanz von memcached auf einer anderen Box ausgeführt werden muss, vorzugsweise wie Sie bemerkt haben, unter Verwendung des LAMP-Stacks. Die Verwendung von Geschwindigkeit bedeutet, dass Sie immer noch auf demselben Stapel ausgeführt werden und die Integration auf der .net-Plattform enger ist.
Wenn Sie jedoch Geschwindigkeit als Cache für andere .net-Anwendungen verwenden möchten, müssen Sie möglicherweise Ihre eigene API schreiben, um die Geschwindigkeitsdaten für den Verbrauch verfügbar zu machen.
quelle
Die Verwaltung der Geschwindigkeit ist etwas aufwändiger, aber weitaus leistungsfähiger als das Speichern im Speicher. Ich bin nicht anti-memcached, nicht im geringsten, es ist großartig. Aber in Zukunft sind neue Projekte, die auf .NET basieren, verrückt, Velocity nicht zu nutzen, selbst in ihrem derzeit unveröffentlichten Zustand.
quelle
Schauen Sie sich SharedCache an . Es ist Open Source, einfach zu bedienen und sehr zuverlässig.
quelle
Gar nicht wahr. Der LAMP-Stack (Linux, Apache, MySQL, PHP) ist nicht erforderlich, um Memcached auszuführen. Ich bevorzuge derzeit das Memcaching gegenüber der Geschwindigkeit, bis die Geschwindigkeit außerhalb des CTP liegt. Ich habe ein bisschen mit Geschwindigkeit herumgespielt, fand es aber zu unhandlich. Ich folge dieser ganzen KISS-Sache, weißt du ... halte es einfach. Nichts ist einfacher als das Zwischenspeichern ... Get (Schlüssel) ... Put (Schlüssel, Wert) ... Destroy (Schlüssel).
quelle
Als Ergänzung zu den oben genannten Erwähnungen von Velocity wurde dies von Microsoft als Teil von AppFabric veröffentlicht . Weitere Details hier.
Schauen Sie sich die verschiedenen Fragen zu AppFabric und Cache hier auf StackOverflow an.
quelle
Ich weiß, dass ich hier etwas zu spät zur Party komme, und es gibt bereits unzählige gute Antworten.
Wir haben Membase unter Windows Server mit großem Erfolg verwendet. Es ist 100% kompatibel mit Memcached und wird von einem netten GUI-Installationsprogramm und einem Webkonfigurationsserver erstellt. Es ist sehr einfach zu verwalten.
Es sind auch andere NoSQL-Funktionen enthalten, die außerhalb des Bereichs dieses Threads liegen, aber einen Blick wert sind. Sie haben eine kostenlose Lizenz für Entwicklungs-, Test- und (eingeschränkte) Produktionsserver.
Membase-Downloads
Auf derselben Seite wird nur Windows Install for Memcached installiert, wenn Sie keine der zusätzlichen Funktionen in Membase möchten.
quelle
Bitte folgen Sie den unten genannten Links, um die Lösung für diese Frage zu sehen.
Ich könnte das Memcached für die Produktion in Windows-Umgebungen implementieren.
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
quelle
Wenn Sie einen zwischengespeicherten Client unter Windows ausführen möchten, gibt es zwei zusätzliche Open Source-Server, die diese Aufgabe übernehmen können. Beide implementieren das Standard-Memcached-Server-Protokoll und sind in Java geschrieben, sodass sie unter Windows ausgeführt werden können.
quelle