Heim  >  Artikel  >  Datenbank  >  Wie Redis die Datenkonsistenz gewährleistet

Wie Redis die Datenkonsistenz gewährleistet

(*-*)浩
(*-*)浩Original
2019-11-28 09:56:2016190Durchsuche

Redis ist im Internet mittlerweile weit verbreitet. Allerdings gibt es im Allgemeinen Probleme mit der Konsistenz der Datenspeicherung und des Cachings.

Wie Redis die Datenkonsistenz gewährleistet

Methode 1:

Datenbank speichert Daten, Redis bleibt nicht bestehen. Nachdem Redis gestartet wurde, werden Daten aus dem geladen Datenbank ist nicht erforderlich. Leseanforderungen, die eine starke Konsistenz und Echtzeitleistung erfordern, werden von Redis verarbeitet. Leseanforderungen, die eine starke Konsistenz und Echtzeitleistung erfordern, werden von der Datenbank verarbeitet. Es gibt zwei Verarbeitungsmethoden für Schreibanforderungen (Empfohlenes Lernen: Redis-Video-Tutorial)

Die Anwendung schreibt zuerst in die Datenbank und aktualisiert dann Redis

Die Anwendung schreibt zuerst in die Datenbank und dann synchronisieren sich andere Daemons mit Redis

Vorteil: Redis-Startup muss sich nicht mit Inkonsistenzen zwischen Redis-Daten und Datenbank befassen

Nachteil: Redis-Startup übt großen Lesedruck auf die Datenbank aus

Methode 2:

Datenbank und Redis verarbeiten unterschiedliche Datentypen und Anforderungen an die Datenbankverarbeitung. Stark konsistente und Echtzeitdaten, wie z. B. Finanzdaten und Transaktionsdaten; B. die beliebtesten Beiträge der Website

Redis- und MySQL-Daten synchronisieren, kann die Codeebene ungefähr wie folgt aussehen: Do: Read: Read redis->No , mysql lesen->MySQL-Daten zurück in Redis schreiben Schreiben: MySQL schreiben->Erfolg, redis schreiben

Parallelität ist nicht hoch: Lesen: Redis lesen- >Nein, mysql->Schreiben MySQL-Daten zurück zu Redis oder direkt von Redis abrufen, falls vorhanden; schreiben: MySQL->erfolgreich schreiben, dann zu Redis schreiben

Situation mit hoher Parallelität: lesen: Redis->Nein, read mysql-> Schreiben Sie die MySQL-Daten zurück in Redis. Falls vorhanden, übernehmen Sie sie direkt von Redis. Schreiben: Wenn sie asynchron sind, schreiben Sie sie zuerst in den Redis-Cache und kehren Sie dann direkt zu den regulären oder spezifischen Daten zurück in MySQL gespeichert, das mehrmals aktualisiert und einmal gespeichert werden kann;

--Hinweis: Wenn Sie Redis schreiben, müssen Sie Redis-Transaktionen verwenden:

127.0.0.1:6379> WATCH id
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR id
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 342183
127.0.0.1:6379>

Methode 3:

Lua-Skript verwenden: Redis erlaubt bei Verwendung von Lua nur die gleichzeitige Ausführung eines Skripts, was der Atomizität von Transaktionen entspricht, ein Lua-Skript jedoch nicht zu lange ausgeführt, sonst blockiert es

EVAL

Der EVAL-Befehl führt Lua-Skripte aus und wertet sie aus.

Syntax:

EVAL script numkeys key [key …] arg [arg …]
rrree

Ein Beispiel sagt mehr als tausend Worte der Erklärung

script lua脚本内容 注意的是脚本不应该是Lua函数。
numkeys 表示指定键名参数的个数。
key [key ...] 表示脚本对应的key值列表 在脚本中可以使用KEYS[1] KEYS[2] KEYS[3]KEYS[n] n从1开始 。
arg [arg ...] 命名行中传递的参数列表 在脚本中可以使用ARGV[1] ARGV[2] ARGV[3]ARGV[n] n从1开始 。

Die Ausführung des obigen Skripts gibt

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 id name 3 mytest
Weitere technische Artikel zum Thema Redis finden Sie in der Spalte

Redis Getting Started Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonWie Redis die Datenkonsistenz gewährleistet. 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