Heim >Java >javaLernprogramm >Java: Was macht Redis?

Java: Was macht Redis?

怪我咯
怪我咯Original
2017-06-26 11:45:144597Durchsuche

Eine Übersicht

1. Redis

Redis wird verwendet Eine speicherbasierte NoSQL-Datenbank, die in der Sprache C geschrieben ist und Persistenz und leistungsstarke Schlüsselwerte unterstützt. Sie speichert hauptsächlich Daten mit großem Zugriffsvolumen, häufigen Änderungen und geringen Sicherheitsanforderungen.

2.NoSQL

Nicht relationale Datenbank. Eine relationale Datenbank ist eine Datenbank, die auf einem relationalen Modell basiert und die Beziehungen zwischen Entitäten in der realen Welt widerspiegelt.

3.BSD-Protokoll

Das BSD-Open-Source-Protokoll ist ein Protokoll, das Benutzern große Freiheiten gibt, den Quellcode zu ändern und zu veröffentlichen Änderungscode nach.

4. Nachrichten-Middleware

Middleware, die das synchrone oder asynchrone Senden und Empfangen von Nachrichten zwischen verteilten Anwendungen unterstützt und sicherstellt.

5. Nachrichtenwarteschlange

Eine Datenstruktur zum Speichern von Nachrichten, die in die Nachrichten-Middleware integriert ist, um den Sende- und Empfangsprozess von effektiv zu steuern Nachrichten. Verwenden Sie die Warteschlange, zuerst rein, zuerst raus.

6. SOA

Serviceorientierte Architektur, eine serviceorientierte Architektur, unterteilt Anwendungen in mehrere grobkörnige, lose gekoppelte Apply-Module , und verbinden Sie diese Module dann über neutrale Schnittstellen.

Zwei Schlüsselnamen

key01::key02: Mehrere Ebenen, benachbarte Ebenen werden durch Folgendes getrennt:

Drei allgemeine Vorgänge

  • redis-server.exe redis-windows-conf: Starten Sie den Server.

  • redis-cli.exe -h 127.0.0.1 -p 6379: Stellen Sie über IP und Port eine Verbindung zu einem Redis-Dienst her.

  • Schlüssel *: Alle Schlüssel in der aktuellen Datenbank anzeigen.

  • config get *: Alle Konfigurationsinformationen abrufen.

  • Hilfebefehl: Zeigen Sie die Bedeutung des Vorgangs an.

  • help @string: Alle String-Operationen anzeigen.

  • key01 key02 umbenennen: Den Schlüssel umbenennen.

  • Typschlüssel: Rufen Sie den Datentyp ab.

  • Entf-Taste: Löschtaste.

  • flushdb: Aktuelle Datenbank löschen.

  • Flushall: Alle Datenbanken löschen.

Vier Saiten

1. Fügen Sie

  • hinzu Schlüsselwert festlegen: Wert zuweisen.

  • mset key01 value01 key02 value02: Weisen Sie mehreren Schlüsseln Werte zu, atomar, erfolgreich und fehlgeschlagen gleichzeitig.

  • Schlüsselwert nx setzen: Kann nur gesetzt werden, wenn der Schlüssel nicht existiert.

  • Schlüsselwert xx setzen: Kann nur gesetzt werden, wenn der Schlüssel vorhanden ist.

  • Schlüsselwert auf Sekunden festlegen: Legen Sie das Timeout des Schlüssels fest.

  • getset-Schlüsselwert: Rufen Sie zuerst den Wert ab und weisen Sie ihn dann zu.

2. Löschen

Entf-Taste: Löschtaste.

3.

  • Incr-Taste ändern: um 1 erhöhen.

  • Incrby-Tasteninkrement: Erhöhen Sie den angegebenen Betrag.

  • incrbyfloat-Schlüsselinkrement: Erhöhen Sie den durch Float-Typ-Daten angegebenen Betrag.

  • Decr-Taste: minus 1.

  • Dekrementierungstaste: Verringern Sie den angegebenen Betrag.

4. Überprüfen Sie

  • Schlüssel abrufen: Wert abrufen.

  • strlen-Taste: Ermitteln Sie die Zeichenfolgenlänge.

  • existiert Schlüssel: gibt 1 zurück, wenn er existiert, 0, wenn er nicht existiert

5. Index

Von Anfang an beginnt der Index bei 0, 1, 2....
Von Ende beginnend Der Index beginnt bei -1, -2. -3...

  • Setrange-Schlüsselindexwert: Ersetzen Sie ab der Indexposition.

  • getrange key begin end: Ruft den Wert des angegebenen Indexbereichs ab.

  • getrange-Taste 0 -1: Alles abrufen.

Fünf LinkedList

1. LinkedList, eine doppelt verknüpfte Liste, weist eine geringe Abfrageeffizienz und eine hohe Hinzufügung und Löschung auf Effizienz.

2.

  • LPUSH-Taste value01 value02 hinzufügen: Elemente von links verschieben.

  • RPUSH-Taste value02 value02: Schieben Sie das Element von rechts.

3. Löschen

  • LPOP-TASTE: Ein Element von links öffnen, ganz Um das Element aus der Liste zu entfernen.

  • RPOP-TASTE: Ein Element von rechts öffnen.

  • ltrim-Taste Start Ende: Elemente außerhalb des angegebenen Bereichs löschen.

LREM-Schlüsselzählwert: Zählelemente mit Wert in der verknüpften Liste löschen.

  • count>0: Von links löschen.

  • count<0: Von rechts löschen.

  • count=0: Alle löschen.

4. Ändern Sie

LINSERT-Taste vor/nach oldValue newValue: Elemente vor und nach dem angegebenen Element einfügen, falls angegeben. Wenn das Element nicht vorhanden ist, wird keine Operation ausgeführt. Wenn mehrere angegebene Elemente vorhanden sind, wird nur das erste Element bearbeitet.

RPOPLPUSH key01 key02: Pop ein Element von der rechten Seite von key01 und schiebe es auf die linke Seite von key02.

5. Überprüfen Sie

llen key: Die Länge ist die Anzahl der Elemente in der Liste.

6. Index

Von links nach rechts, beginnend bei 0; von rechts nach links, beginnend bei -1.

  • LRANGE-Taste Anfang Ende: Ruft die Elemente im angegebenen Indexbereich ab.

  • LRANGE-Taste 0 -1: Alle Elemente abrufen.

  • LINDEX-Schlüsselindex: Ruft den Wert der angegebenen Indexposition ab.

  • LSET-Schlüsselindexwert: Legen Sie den Wert der angegebenen Indexposition fest.

Sechs Hash

Der Schlüsselwertraum speichert nicht nur den Schlüsselwert, sondern auch andere Informationen, wie z Zeitüberschreitung, daher nimmt der Schlüssel viel Platz ein. Sie sollten die Anzahl der Schlüssel reduzieren und verwandte -Daten im selben Schlüssel speichern. Dadurch wird ein Datentyp-Hash generiert, der HashMap entspricht.

Im Hash kann die Timeout-Dauer nur für den Schlüssel und nicht für das Feld festgelegt werden.

1.

  • hset-Schlüsselfeldwert hinzugefügt: Weisen Sie einem Feld im Schlüssel einen Wert zu.

  • hmset key field01 value01 field02 value02: Weisen Sie mehreren Feldern gleichzeitig Werte zu.

2.

  • HDEL-Schlüsselfeld löschen: Das angegebene Feld im Schlüssel löschen.

3. Ändern Sie

  • Hincrby Key Field Inkrement: Fügen Sie ein Ganzzahlfeld hinzu.

  • hincrbyfloat-Feldinkrement: Erhöhen Sie den Wert eines Gleitkommafelds.

4. Überprüfen Sie

  • hget key field: Rufen Sie den Wert des angegebenen Felds ab im Schlüssel.

  • hmget key field01 field02: Werte mehrerer Felder abrufen.

  • hgetall-Schlüssel: Alle Felder und ihre entsprechenden Werte abrufen.

  • hkeys-Taste: Alle Feldnamen abrufen.

  • kvals-Schlüssel: Werte aller Felder abrufen.

  • Hexists-Schlüsselfeld: Bestimmen Sie, ob das angegebene Feld im Schlüssel vorhanden ist.

  • hlen key: Ermittelt die Anzahl der Felder im Schlüssel.

Siebener Satz

Ungeordnet, nicht wiederholbar. Die sogenannte Unordnung bedeutet, dass dieselbe Sammlung zu unterschiedlichen Zeiten abgefragt wird und die Elemente in derselben Sortierposition unterschiedlich sind.

1. Fügen Sie

  • sadd key value01 vlaue02 hinzu: Element hinzufügen.

2. Löschen

  • srem-Schlüssel value01 value02: Element löschen.

  • Spop-Taste: Ein Element nach dem Zufallsprinzip entfernen.

3. Überprüfen Sie

  • Smembers-Schlüssel: Holen Sie sich alle Elemente

  • srandmember key: Gibt ein Element zufällig zurück.

  • Scard-Schlüssel: Gibt die Anzahl der Elemente zurück.

  • Sismember-Schlüsselwert: Bestimmen Sie, ob der Wert vorhanden ist.

4. Schnitt- und Vereinigungsoperation

Durch die Schnitt- und Vereinigungsoperation werden die Elemente in der bearbeiteten Menge nicht gelöscht .

  • sdiff key01 key02: Finden Sie den Differenzsatz und löschen Sie die Elemente von key02 aus key01. Dies ist nur eine Operation und löscht die Elemente in key01 nicht.

  • sdiffstore destination key01 key02: Speichern Sie den Differenzsatz in der angegebenen Sammlung.

  • suinon key01 key02: Finden Sie die Vereinigung.

  • sninonstore destination key01 key02: Speichern Sie das Vereinigungsergebnis in der angegebenen Sammlung.

  • Sinter key01 key02: Finden Sie den Schnittpunkt.

  • Sinterstore-Ziel key01 key02: Holen Sie sich den Schnittpunkt und speichern Sie ihn in der angegebenen Sammlung.

Acht sortierter Satz

Bestellter Satz, der Grund für die Bestellung, jedem Element ist eine Punktzahl zugeordnet, sortiert nach punkten.

1. Fügen Sie

  • Zadd Key Score01 Value01 Score02 Value02 hinzu.

2. Löschen

  • zrem-Schlüsselwert: Löschen Sie das angegebene Element.

  • zremrangebyrank key start end: Elemente im angegebenen Sortierbereich löschen.

  • zremrangebyscore key min max: Elemente im angegebenen Score-Bereich löschen.

3. Ändern Sie

  • Zincrby-Tasteninkrementwert: Ändern Sie die Partitur.

  • zrank-Schlüsselwert: Ermittelt die Sortierung von klein nach groß, beginnend bei 0.

  • zrevrank-Schlüsselwert: Ermittelt die Sortierung von groß nach klein, beginnend bei 0.

4. Überprüfen Sie

  • zscore-Schlüsselwert01: Holen Sie sich die Punktzahl.

  • Zcard-Schlüssel: Ermitteln Sie die Anzahl der Elemente im Set.

  • zrange key start end [with scores]: Ruft den Wert des angegebenen Indexbereichs ab.

  • zrangebyscore key min max [Limit Offset Count]: Ruft den Wert des Scores im angegebenen Intervall ab. Der Grenzwert wird verwendet, um Zähldaten vom angegebenen Offset abzufangen . Sie können ( vor min hinzufügen, um ein offenes Intervall anzuzeigen, und nur min kann geladen werden.

  • zcount key min max: Ermittelt die Anzahl der Elemente im angegebenen Bewertungsintervall.

5. Union

zunionstore destination numKeys key[key...] weights weight aggregate max/min/sum
  • Ziel: Die Sammlung, in der die Union-Ergebnisse gespeichert werden.

  • numKey: die Anzahl der an der Operation beteiligten Sammlungen.

  • Gewichte: Gewichte, also der Prozentsatz der an der Berechnung beteiligten Punkte, werden für jeden Satz separat angegeben.

  • Aggregat: Integrationsstrategie.

  • Zinterstore Destination numKeys key[key...] Gewichte Gewichtsaggregat Max/Min/Summe: Kreuzungsoperation.

Nine Rdis Persistenz

1. Was ist Persistenz?

Der Vorgang des Speicherns von Daten auf der Festplatte wird als Persistenz bezeichnet.

2. Redis-Persistenzmethode

  • RDB: Redis DB, alle Daten speichern, um sie in binärer Form .rdb auszugeben Datei, standardmäßig aktiviert.

  • AOF: AppendOnlyFile, speichert Änderungen an der Datenbank in einer Datei, die standardmäßig geschlossen ist.

3.RDB

RDB-Persistenz generiert eine dump.rdb-Datei und überschreibt die Originaldatei. RDB-Modus

  • Der Benutzer gibt einen Speichervorgang aus: Blockierung des Servers.

  • Der Benutzer gibt einen bgsave-Vorgang aus: Er wird im Hintergrund ausgeführt und blockiert den Server nicht. Das Prinzip besteht darin, einen Unterthread zu erstellen, um persistente Dateien zu generieren.

  • In der Konfigurationsdatei konfigurieren und automatisch beibehalten, wenn bestimmte Bedingungen erfüllt sind. Konfigurationsbedingungen: Speichern <Änderungen>, nur wenn mindestens die angegebene Anzahl von Schreibvorgängen innerhalb der angegebenen Zeit erfolgt, wird der BGSAVE-Vorgang ausgeführt, um die RDB-Datei zu generieren.

Die RDB-Persistenzmethode speichert jedes Mal alle Daten in der Datenbank auf der Festplatte, was Systemressourcen verbraucht und nicht häufig ausgeführt werden kann Das RDB-Intervall liegt innerhalb von . Zur Datensicherheit kann parallel die AOF-Persistenz verwendet werden.

4. AOF

⑴Der Ausführungsprozess des Systems, das die Daten im Speicher in die Datei schreibt: Schreiben Sie zuerst die Daten in den Puffer , und dann der Puffer Nachdem der Bereich voll ist, wird der Inhalt des Puffers in die Datei geschrieben.

⑵ Hängen Sie die Änderungsvorgänge an der Datenbank an die Datei an, wobei die zuerst ausgeführten Vorgänge im Vordergrund stehen.

⑶Mehrere Arten von AOP

  • immer: Jedes Mal, wenn ein Änderungsvorgang ausgeführt wird, wird die Datei sofort geschrieben.

  • Everysec: Änderungen werden alle 1 Sekunde in die Datei geschrieben, Standardwert.

  • nein: Je nach System wird die Datei geschrieben, nachdem der Puffer voll ist.

⑷Umschreiben von AOP-Dateien

Um zu vermeiden, dass die AOP-Datei zu groß wird, können Sie die AOP neu schreiben Datei und das Hinzufügen mehrerer AOP-Dateien werden zu einem Vorgang zusammengeführt.
Umschreibmethode:
Die erste Methode, BGREWRITEAOP: wird verwendet, um diesen Vorgang zu senden und die AOP-Datei neu zu schreiben.
Die zweite Methode besteht darin, Konfigurationsbedingungen festzulegen und automatisch neu zu schreiben, wenn die Bedingungen erfüllt sind:

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

Neu schreiben, wenn die AOP-Dateigröße einen bestimmten Wert erreicht.

Zehn Cluster

1. Ein Redis-Dienst kann mehrere Replikate des Dienstes haben. Dieser Redis-Dienst wird als Master-Dienst bezeichnet Replikate Das Produkt wird als Slave-Dienst bezeichnet.

2. Der Master-Dienst synchronisiert seine Daten mit dem Slave-Dienst.

3. Der Master-Dienst kann sowohl lesen als auch schreiben, und der Slave-Dienst kann nur lesen.

4. Es gibt zwei Möglichkeiten, einen Dienst als Slave-Dienst festzulegen:

  • Der Kunde gibt „slaveof masterip“ aus Masterport.

  • Konfigurieren Sie in der Konfigurationsdatei: Slaveof Masterip Masterport.

5. Sie können die Slave-Einstellung in der Konfigurationsdatei oder durch den Kunden abbrechen: Slave von niemandem

6. Probleme bei der Master-Slave-Replikation
Nur ​​ein Master-Server führt Schreibvorgänge aus. Wenn der Master-Server ausfällt, kann der Schreibvorgang nicht durchgeführt werden.

Eleven Sentinel Sentinel-Mechanismus

1. Was ist der Sentinel-Mechanismus?

Konfigurieren Sie einen Listener für den Master-Server. Wenn der Master-Server ausfällt, stuft der Sentinel automatisch einen Slave-Server zum Master-Server hoch . und sorgt so für eine unterbrechungsfreie Ausführung des Servers.

Zwölf Twemproxy-Cluster

1. Bei der Master-Slave-Replikation wird die Schreibaufgabe immer noch von einem Knoten übernommen, und der Schreibdruck ist vorhanden nicht gelöst. Daher wurde der Twemproxy-Clustermechanismus geboren. Benutzer senden Anfragen an den Proxy, und der Proxy weist Knoten im Serverpool Schreibaufgaben zu.

2. Grundprinzipien von Twenproxy

Jeder Server im Serverpool hat ein Empfangsintervall, nachdem der Client eine Anfrage an den Proxy gesendet hat , der Proxy Ruft den Hashcode des Schlüssels ab und gibt an, auf welchem ​​Server der Wert im -Intervall liegt.

3. Nachteile

Es gibt ein zentrales Objekt, den Proxy. Wenn es ein Problem mit dem Proxy gibt, kann der gesamte Redis-Dienst nicht Die Lösung besteht darin, dass durch die Dezentralisierung ein bestimmter Teil ausfallen kann, das Ganze jedoch weiterhin ausgeführt werden kann.

Dreizehn nativer Cluster-Modus

1. Was ist der native Cluster-Modus?

Mehrere Redis-Master-Server werden als Knoten bezeichnet. Die Knoten können ihre eigenen -Slaves haben. Server, um den Lesedruck zu teilen.

2. Einer der Zwecke der Kommunikation zwischen Knoten

Jeder Knoten kann mit allen anderen Knoten kommunizieren und als Wächter zur Überwachung fungieren andere Knoten. Wenn ein Knoten ausfällt Umfassende Informationen von mehreren anderen Knoten. Wenn festgestellt wird, dass der Knoten nicht ordnungsgemäß funktioniert, wird ein Slave-Server des Knotens heraufgestuft.

Vierzehn Jedis

1. Um auf den Redis-Server in Java zuzugreifen, müssen Sie das Regalpaket jedis.jar importieren.

2. Jedis ist ein Client-Tool in Java-Sprache, das eine Verbindung zum Redis-Server herstellt.

3. Jedis behält grundsätzlich die Befehlszeilenmethode für den Zugriff auf den Redis-Server bei.

4. So wie es am besten ist, einen Verbindungspool für die Verbindung mit einer relationalen Datenbank einzurichten, ist es auch am besten, einen Verbindungspool für die Verbindung mit der Rdis-Datenbank einzurichten beim Einrichten eines Verbindungspools JedisPoolConfig/JedisPool.

5. Ein einzelner Redis-Server steht unter großem Druck, sodass ein Redis-Servercluster erstellt werden kann und die zum Erstellen des Clusters verwendete Klasse HostAndPort/JedisCluster verwendet wird.

Das obige ist der detaillierte Inhalt vonJava: Was macht Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn