Redis ist im Internet mittlerweile weit verbreitet. Allerdings gibt es im Allgemeinen Probleme mit der Konsistenz der Datenspeicherung und des Cachings.
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 mytestWeitere 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!