Heim Datenbank Redis Wie Redis die Datenkonsistenz gewährleistet

Wie Redis die Datenkonsistenz gewährleistet

Nov 28, 2019 am 09:56 AM
redis

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>
Nach dem Login kopieren

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 …]
Nach dem Login kopieren
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开始 。
Nach dem Login kopieren

Die Ausführung des obigen Skripts gibt

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 id name 3 mytest
Nach dem Login kopieren
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!

Erklärung dieser Website
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

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung für den Fehler 0x80242008 bei der Installation von Windows 11 10.0.22000.100 Lösung für den Fehler 0x80242008 bei der Installation von Windows 11 10.0.22000.100 May 08, 2024 pm 03:50 PM

Lösung für den Fehler 0x80242008 bei der Installation von Windows 11 10.0.22000.100

Analysieren Sie PHP-Funktionsengpässe und verbessern Sie die Ausführungseffizienz Analysieren Sie PHP-Funktionsengpässe und verbessern Sie die Ausführungseffizienz Apr 23, 2024 pm 03:42 PM

Analysieren Sie PHP-Funktionsengpässe und verbessern Sie die Ausführungseffizienz

Ist Redis ein Speichercache? Ist Redis ein Speichercache? Apr 20, 2024 am 05:26 AM

Ist Redis ein Speichercache?

Golang API-Caching-Strategie und -Optimierung Golang API-Caching-Strategie und -Optimierung May 07, 2024 pm 02:12 PM

Golang API-Caching-Strategie und -Optimierung

Ist Redis eine nicht relationale Datenbank? Ist Redis eine nicht relationale Datenbank? Apr 20, 2024 am 05:36 AM

Ist Redis eine nicht relationale Datenbank?

Welches hat die bessere Leistung, Erlang oder Golang? Welches hat die bessere Leistung, Erlang oder Golang? Apr 21, 2024 am 03:24 AM

Welches hat die bessere Leistung, Erlang oder Golang?

Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung May 09, 2024 pm 01:30 PM

Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung

Ist Redis Nio? Ist Redis Nio? Apr 20, 2024 am 04:52 AM

Ist Redis Nio?

See all articles