2015-03-10 12 views
7

Redis wird oft als Cache verwendet, obwohl es viel mehr bietet als nur In-Memory-Caching (es unterstützt beispielsweise Persistenz).Redis vs MemoryCache

Aus welchen Gründen würde man sich für Redis entscheiden und nicht für .NET MemoryCache? Persistenz und Datentypen (andere als Schlüssel-Wert-Paare) kommen mir in den Sinn, aber ich bin mir sicher, dass es andere Gründe für die Verwendung einer zusätzlichen Architekturschicht (d. H. Redis) geben muss.

+0

Ist MemoryCache nicht in den Anwendungsserver eingebettet? Redis ist ein Netzwerkserver, auf den von verschiedenen Clients aus zugegriffen werden kann. –

Antwort

8

MemoryCache ist in den Prozess eingebettet und kann daher nur als einfacher Schlüssel/Wert-Speicher von diesem Prozess verwendet werden. Ein separates Server Gegenstück von MemoryCache wäre memcached. Wenn redis ein Datenstruktur-Server ist, der auf anderen Servern gehostet werden kann, kann er wie memcached mit dem Netzwerk interagieren, aber redis unterstützt eine lange Liste komplexer Datentypen und Operationen, um logisches und intelligentes Caching bereitzustellen.

+0

Welche Vorteile haben Sie in einem separaten Prozess? – Gigi

+0

Nicht nur Prozess trennen, auch ein separater Server. Ein einfacher Vorteil ist die Trennung von Modulen in Architekturen, andere sind Skalierbarkeit. MemoryCache ist auf den Speicher des Anwendungsservers beschränkt, während Sie in Redis oder Memcached mehrere Server hinzufügen oder den Arbeitsspeicher des Redis-Servers erhöhen können, um die Leistung zu erhalten. – DhruvPathak

+0

Ich bin nicht überzeugt. Soweit ich weiß, repliziert Redis die Schlüssel über Instanzen hinweg, so dass die Speicherbelegung überall gleich ist (grob gesagt). – Gigi

Verwandte Themen