1. Einleitung:
NoSQL-Datenbanken sind in den letzten Jahren zum Synonym für hohe Parallelität und massive Datenspeicherlösungen geworden, und auch entsprechende Produkte sind wie Pilze aus dem Boden geschossen. Allerdings gibt es nur eine Handvoll Produkte, die sich von vielen Produkten abheben können, wie zum Beispiel Redis, MongoDB, BerkeleyDB und CouchDB. Da jedes Produkt unterschiedliche Eigenschaften aufweist, gibt es im Folgenden nur eine kurze Beschreibung:
1). Weitere Situationen: BerkeleyDB wurde beispielsweise vor der Übernahme durch Oracle als Speicher-Engine verwendet. Es kann davon ausgegangen werden, dass dieses Produkt eine hervorragende Parallelitätsskalierbarkeit aufweist, Transaktionen und verschachtelte Transaktionen unterstützt und große Datenmengen speichert haben einen extrem hohen Nutzwert bei der Speicherung von Echtzeitdaten. Es sollte jedoch darauf hingewiesen werden, dass die Lizenz dieses Produkts GPL ist, was bedeutet, dass die Nutzung nicht in allen Fällen kostenlos ist.
2). MongoDB ist als Oriented-Document-Datenbankserver definiert und kann wie andere relationale Datenbankserver unabhängig ausgeführt werden. Aus der offiziellen Dokumentation dieses Produkts können wir erfahren, dass MongoDB hauptsächlich für Foren oder Blog-Websites mit hoher Parallelität geeignet ist. Die Hauptmerkmale dieser Websites sind hohe gleichzeitige Besuche, mehr Lesevorgänge und weniger Schreibvorgänge, große Datenmengen und einfache logische Beziehungen und Dokumente als primäre Datenquelle usw. Wie bei BerkeleyDB ist die Lizenz dieses Produkts GPL.
3). Redis, ein typischer NoSQL-Datenbankserver, kann im Vergleich zu BerkeleyDB unabhängig auf seinem eigenen Server-Host als Dienstprogramm ausgeführt werden. Oft wird Redis nur als Schlüssel/Wert-Datenbankserver betrachtet, aber das ist nicht der Fall. In der aktuellen Version unterstützt Redis zusätzlich zu Schlüssel/Wert auch Datenstrukturen wie Liste, Hash, Satz und geordnete Menge , so dass die Verwendungsmöglichkeiten auch breiter sind. Zu diesem Missverständnis hat auch die offizielle Redis-Website eine entsprechende Klarstellung gegeben. Im Gegensatz zu den beiden oben genannten Produkten ist die Lizenz von Redis die Apache-Lizenz, die derzeit völlig kostenlos ist.
4). Memcached, Daten-Caching-Server. Warum wird hier eine Erklärung zu diesem Produkt gegeben? Sehr einfach, weil ich denke, dass es in Bezug auf die Verwendung Redis am ähnlichsten ist. Schließlich handelt es sich hier um eine technische Blogserie über Redis. Vor diesem Hintergrund werden wir diese beiden Produkte kurz vergleichen. Lassen Sie uns zunächst über den größten Unterschied zwischen ihnen sprechen. Sobald der Server ausfällt, verschwinden alle zuvor im Speicher gespeicherten Daten. Daher ist ersichtlich, dass Memcached keinerlei Daten bereitstellt Die Datenpersistenzfunktion bietet eine solche Funktionalität. Darüber hinaus bietet Redis umfangreichere Datenspeicherstrukturen wie Hash und Set. Was ihre Ähnlichkeiten betrifft, gibt es zwei Hauptpunkte: Zum einen sind sie völlig kostenlos, zum anderen sind die von ihnen bereitgestellten Befehlsformen sehr ähnlich.
2. Vorteile von Redis:
1). Erstellen Sie Ihre eigene Plattform in ein oder zwei Tagen oder sogar ein paar Stunden.
2) Während es viele häufige Probleme löst, bietet es auch relevante Lösungen für einige personalisierte Probleme, wie z. B. Indexierungs-Engines, statistische Rankings, Nachrichtenwarteschlangendienste usw.
3. Die Hauptprobleme von Redis in der aktuellen Version:
1). In der offiziellen Version gibt es keine Windows-Plattformunterstützung und die veröffentlichte offizielle Version unterstützt nur Unix-ähnlich und MacOSX Plattformen.
2) Cluster-Unterstützung wird nicht bereitgestellt, aber laut der offiziellen Website wird diese Funktion voraussichtlich in Version 2.6 hinzugefügt.
3) Wenn in der Veröffentlichungs-/Abonnementfunktion der Master ausfällt, kann der Slave nicht automatisch zum Master befördert werden.
4. Vergleich mit relationaler Datenbank:
In der aktuellen Version (2.4.7) von Redis werden fünf verschiedene Datentypen unterstützt. Nur einer davon, der String-Typ, kann als Schlüsselwertstruktur betrachtet werden, während andere Datentypen vorhanden sind Anwendungsszenarien, die auf ihre jeweiligen Eigenschaften zutreffen, und wir werden die spezifischen Details in späteren Blogs dieser Reihe erläutern.
Im Vergleich zu relationalen Datenbanken kann Redis aufgrund seiner relativ einfachen Speicherstruktur keine gute Unterstützung für komplexe logische Beziehungen bieten. In Szenarien, die auf Redis anwendbar sind, können wir dadurch jedoch eine erhebliche Effizienzsteigerung erzielen. Dennoch bietet uns Redis immer noch einige grundlegende Konzepte, die eine Datenbank haben sollte, wie zum Beispiel: Sie können verschiedene Datenbanken in derselben Verbindung öffnen. Der Unterschied besteht jedoch darin, dass die Datenbanken in Redis standardmäßig nach Zahlen benannt sind Die unter geöffnete Datenbank ist 0. Wenn Sie planen, die Datenbank zu wechseln, während das Programm ausgeführt wird, können Sie mit dem Redis-Befehl „select“ andere Datenbanken öffnen, z. B. „select 1“. Wenn Sie später wieder zur Standarddatenbank wechseln möchten, führen Sie einfach „select 0“ aus.
In Bezug auf die Datenspeicherung folgt Redis der Mainstream-Idee bestehender NoSQL-Datenbanken, das heißt, der Schlüssel ist die eindeutige Kennung für den Datenabruf. Wir können ihn einfach als Schlüssel des Index in der relationalen Datenbank verstehen und Value wird als Datenspeicher verwendet. Das Hauptobjekt, jedem Wert ist ein Schlüssel zugeordnet, der dem Speicherort der physischen Daten im Index in der Datentabelle ähnelt. In Redis wird Value als binärer Bytestrom betrachtet, der zum Speichern von Daten in beliebigen Formaten wie Json, XML und Byteströmen serialisierter Objekte usw. verwendet wird. Daher können wir ihn uns auch als Feld vom Typ BLOB in RDB vorstellen. Es ist ersichtlich, dass wir bei der Durchführung einer Datenabfrage nur den Schlüssel als Bedingung für unsere Abfrage verwenden können. Natürlich können wir auch einige in Redis bereitgestellte Techniken anwenden, um den Wert als Schlüssel für andere Daten zu verwenden Die folgenden Blogs stellen vor.
5. So bleiben Speicherdaten bestehen:
Standardmäßig bezieht sich Redis auf die Anzahl der Datenänderungen in der aktuellen Datenbank und speichert nach Erreichen eines bestimmten Schwellenwerts einen Snapshot davon In der Datenbank auf der Festplatte können wir den Schwellenwert über die Konfigurationsdatei festlegen. Normalerweise können wir Redis auch so einstellen, dass es regelmäßig speichert. Wenn beispielsweise mehr als 1.000 Schlüsseldaten geändert werden, führt Redis alle 60 Sekunden einen Datenpersistenzvorgang durch. Die Standardeinstellung ist, dass Redis bei 9 oder weniger Datenänderungen alle 15 Minuten bestehen bleibt.
Aus der oben genannten Lösung geht hervor, dass die Laufzeiteffizienz von Redis bei jeder neuen Datenänderung sehr effizient ist Solche Änderungen werden nicht sofort auf der Festplatte gespeichert, sodass bei den meisten Änderungsvorgängen Festplatten-E/A vermieden werden. Allerdings haben die Dinge oft zwei Seiten: Wir gewinnen zwar an Effizienz, verlieren aber an Datenzuverlässigkeit. Wenn der Server, auf dem sich Redis befindet, ausfällt, bevor der Speicher-Snapshot auf der Festplatte gespeichert wird, gehen alle geänderten Daten verloren, die nicht auf die Festplatte geschrieben wurden. Um eine hohe Zuverlässigkeit der Daten sicherzustellen, bietet Redis außerdem einen weiteren Mechanismus zur Datenpersistenz: den Anhängemodus. Wenn der Redis-Server auf diese Weise konfiguriert ist, werden Datenänderungen bei jeder Datenänderung sofort auf der Festplatte gespeichert.
Das Obige ist der Inhalt des Redis-Tutorials (1): Einführung in Redis. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).