Memcached vs. Redis verglichen

Memcached vs. Redis verglichen
Es gibt zwei konkurrierende Optionen für In-Memory-Schlüsselwert-Paardatenbanken. Redis und Memcached. Sie sind sowohl kostenlose Datenbanken mit Open-Source-In-Memory, die eine geringe Latenz für den Zugriff auf Daten bieten.

Trotz dieser Ähnlichkeiten kann es eine ziemliche Herausforderung sein, für Ihre Anwendungen zu wählen.

In diesem Artikel werden wir die wesentlichen Aspekte einer In-Memory-Datenbank aufschlüsseln und sie vergleichen.

Definition

Beginnen wir mit den Grundlagen und diskutieren Sie, was Redis und was memcached ist?

Was ist Redis?

Remote Dictionary Server oder REDIS-Kurzfilm wird als kostenlose Datenbank für Open-Source-In-Memory definiert, die als Cache- oder Nachrichtenbroker verwendet wird. Es wurde 2009 von Salvatore Sanfilippo entwickelt, und jetzt versorgt es beliebte Systeme wie Twitter, Stackoverflow, Github usw.

Was ist memcached?

Memcached ist definiert als freie, open-Source- und Hochleistungs-In-Memory-Datenbank. Es wird verwendet, um einen Caching -Mechanismus für Anwendungen zu liefern, wirkt jedoch generell wirkt.

Es wurde 2004 von Brad Fitzpatrick entwickelt und wird jetzt von beliebten Anwendungen wie Twitter, Facebook, YouTube, Instagram, Udemy, Slack usw. verwendet.

Sprach- und Plattformunterstützung

Redis ist in ANSI C geschrieben und funktioniert in allen POSIX -Systemen. Redis wird in Linux-, BSD- und OSX -Systemen unterstützt. Windows -Support ist zum Schreiben dieses Tutorials noch nicht verfügbar.

Memcached ist in ANSI C, aber plattformübergreifend geschrieben. Obwohl es keine offizielle Veröffentlichung von Memcached für Windows gibt, finden Sie Cygwin -Implementierungen der Datenbank oder kompilieren Sie sie für Ihre Plattform.

Datenspeicher

Redis verfügt über mehrere Datenstrukturen, die für viele Anforderungen sehr geeignet sind. Es unterstützt Datentypen wie:

  1. Saiten
  2. Listen
  3. Sets
  4. Hashes
  5. Sortierte Sets
  6. Bitmaps
  7. Hyperlogs
  8. Geospatial Indexes
  9. Streams

Mit Redis können Sie auch automatische Vorgänge wie Anhänge an Zeichenfolgen, Berechnung der SET -Gewerkschaft, Differenz, Kreuzung usw. durchführen., Anhängen eines Elements an eine Liste usw.

Memcached dagegen unterstützt einfache binäre Saiten. Dies erleichtert die Verwendung und verwendet weniger Speicheraufwand als Redis.

Die Architektur

Sowohl Redis als auch Memcached folgen einer Client-Server-Architektur. Redis ist jedoch Single-Thread.

Datenpartitionierung

Sowohl Redis als auch Memcached unterstützen die Verteilung von Daten über verschiedene Knoten hinweg.

Latenz

Da sowohl Redis als auch Memcached In-Memory-Datenbanken sind, bieten sie eine Latenz von Untermillisekunden an.

Cache -Löschen

Mit Redis und Memcached können Sie den Cache mit den Befehlen Flushall oder FlushDB und Flush_all löschen.

Skalierbarkeit

Sowohl Redis als auch Memcached ermöglichen es Ihnen, zu skalieren, wenn Ihre Daten wachsen. Redis skaliert jedoch horizontal gut, während die Memcacher bei vertikaler Skalierbarkeit gut profitiert haben

Räumungspolitik

Redis unterstützt eine Sammlung von Räumungsrichtlinien, die nach Ihren Anforderungen angepasst werden können.

Sehen Sie sich unser Tutorial über Redis -Räumungsrichtlinien an, um mehr zu erfahren.

Andererseits ist Memcached auf die LRU -Räumungsrichtlinie beschränkt.

Benutzerfreundlichkeit/Dokumentation

Redis ist eine sehr gute Dokumentation und hat eine große Gemeinschaft dahinter. Dies macht es sehr einfach zu lernen und zu verwenden.

Obwohl Memcached allgemein und relativ dokumentiert ist, müssen Sie möglicherweise in den Quellcode eingraben, um benutzerdefinierte Funktionen zu implementieren.

Datenbankmanagement

Redis bietet Ihnen ein integriertes CLI-Dienstprogramm zum Zugriff auf und verwaltet auf Ihre Datenbanken und Ihren Redis-Server.

Memcached verwendet Telnet, um Ihren Server zu verbinden und zu verwalten.

Kommunikationsprotokoll

Redis verwendet TCP-Verbindungsprotokoll oder UNIX-ähnliche Steckdosen ohne Unterstützung für UDP.

Memcached unterstützt sowohl TCP- als auch UDP -Protokolle.

Reproduzieren

Redis bietet eine einfache Implementierung von Master-Slave-Replikation. Es ist mühelos zu verwenden und zu konfigurieren. Die Replikation erzeugt genaue Kopien der Master -Instanz, unabhängig davon, was mit dem Master passiert.

Memcached unterstützt die Replikation nicht nativ. Sie können jedoch Datenreplikation mit Patch -Tools wie http: // repCached implementieren.Labor.Klab.org/

Ausdauer/Schnappschüsse

Redis unterstützt das Snapshotting nativ, indem Sie einen Schnappschuss Ihrer Datensätze auf einer Festplatte in Binärdatei speichern. Sie können jedoch die Schnappschussfunktionen in Redis anpassen.Conf -Datei.

Zur Persistenz unterstützt Redis:

  1. RDB -Persistenz
  2. Aof Persistenz.

Überprüfen Sie unser Tutorial über die Erresistenz, um weiter zu erkunden.

Memcached unterstützt nicht nativ Disk Divate. Sie können jedoch Tools wie Memcached-DD zur Implementierung verwenden.

Es gibt keine Datenbeständigkeit für Memcached.

Serverseitiges Skripting

Redis unterstützt das serverseitige Skripting mit einem eingebetteten LUA-Interpreter. Es verwendet Evaly- und Evalsha -Funktionen, um Lua -Skripte zu bewerten.

Denken Sie daran, dass Lua -Skripte in Redis synchron sind. Daher werden andere Operationen blockiert, wenn die Skripte ausführen.

Memcached unterstützt keine serverseitigen Skripten.

Pub/Sub

Redis unterstützt nativ das Messaging-Modell des Publish-Subscribe.

Memcached hat keine Unterstützung für das Pub-Sub-Messaging-Modell.

Streams

Redis unterstützt Streams mit der Hinzufügung von Redis -Stream -Typen in Redis Version 5.0

Memcached unterstützt keine Streams nativ. Sie können jedoch Tools wie Kafcache verwenden, um Streams zu implementieren.

https: // github.com/jpzk/kafcache

Geospatial unterstützt

Redis unterstützt native Unterstützung für Echtzeit-Geospatialdaten. Memcached hat jedoch keine Datenstruktur zur Unterstützung von Geospatialdaten.

Transaktionsmanagement

Obwohl Memcached Atomoperationen verwendet, unterstützt es keine Transaktionen.

Standardmäßig unterstützt Redis Transaktionen, um Befehle auszuführen.

Clients/Programmiersprachen

Redis unterstützt fast alle wichtigen Programmiersprachen. Unterstützte Client -Listen werden wie unten gezeigt:

  • ActionScript
  • ActiveX/com+
  • Verprügeln
  • Boomi
  • C
  • C#
  • C++
  • Clojure
  • Common Lisp
  • Kristall
  • D
  • Pfeil
  • Delphi
  • Elixier
  • EMACS Lisp
  • Erlang
  • Schick
  • gaffen
  • Gnu Prolog
  • Gehen
  • Haskell
  • Haxe
  • Io
  • Java
  • Julia
  • Kotlin
  • Lasso
  • Lua
  • Matlab
  • Mruby
  • Nim
  • Knoten.JS
  • Ziel c
  • Ocaml
  • Pascal
  • Perl
  • Php
  • PL/sql
  • Prolog
  • Reine Daten
  • Python
  • R
  • Schläger
  • Rebol
  • Rubin
  • Rost
  • Scala
  • Planen
  • Smalltalk
  • Schnell
  • Tcl
  • Vb
  • Vcl
  • Xojo

Memcached wird nicht zurückgelassen und bietet Kunden große Programmiersprachen. In der Liste der Kunden im Vergleich zu Redis kommt es jedoch zu wenig.

Sie beinhalten:

  • .NETZ
    • Enyim
    • Sei es
  • C
    • libmemcached
  • C++
    • Libmemcached
    • Mcache-Client
  • Coldfusion
    • cfspyMemcached
  • Erlang
    • Anker
  • Elixier
    • Memcache
  • Java
    • SpyMemcached
    • Xmemcached
    • GWHALIN MEMCACHED -Kunde
  • Lispeln
    • Cl-Memcached
  • Lua
    • Lua-Restally-Memcached
  • Ocaml
    • Ocaml memcached
  • Perl
    • Perl-Cache-vorgefertigt
  • Php
    • Memcached-Php
    • Memcached
    • PHP-Memcached
  • Python
    • Pymemcache
    • Python-Memcached

Cloud -Unterstützung

Die folgenden Cloud -Anbieter unterstützen Redis:

  1. Google Cloud als MemoryStore
  2. Amazon AWS als Redis
  3. Microsoft Azure als Azure -Cache
  4. Alibaba Cloud als Asparadb
  5. Orakel
  6. IBM Cloud

Die folgenden Anbieter unterstützen auch Memcached:

  1. Google Cloud als MemoryStore
  2. Amazon AWS als Amazon Elasticache
  3. Microsoft Azure
  4. Alibaba Cloud als Asparadb
  5. IBM Cloud wie von Bitnami memcachiert

Abschließende Gedanken.

Dieses Tutorial bietet eine umfassende Aufschlüsselung der Ähnlichkeiten und Unterschiede von Redis- und Memcached -Datenbanken. Denken Sie daran, dass dieses Tutorial als Informationsreferenz dient. Verwenden Sie es, um eine Wahl zu treffen, die auf Ihren Anforderungen basiert.

Happy Coding und wir sehen uns im nächsten!!!