Heim > Datenbank > Redis > Hauptteil

Warum kann Redis verteilte Sperren ausführen?

(*-*)浩
Freigeben: 2019-11-21 13:43:07
Original
7289 Leute haben es durchsucht

Warum kann Redis verteilte Sperren ausführen?

Redis ist ein Einzelprozess-Single-Thread-Modus. Es verwendet den Warteschlangenmodus, um gleichzeitigen Zugriff in seriellen Zugriff umzuwandeln, und es besteht keine Konkurrenz zwischen den Verbindungen mehrerer Clients zu Redis .

Der implementierte Code dient hauptsächlich dazu, die Seriennummer eines bestimmten Datenelements zu sperren, um zu verhindern, dass mehrere Threads diese Daten schreiben. (Schließt sich gegenseitig aus) (Empfohlenes Lernen: Redis-Video-Tutorial)

Die derzeit beliebteste verteilte Redis-Sperre ist Redisson Das Prinzip besteht darin, zu verstehen, wie Redis verteilte Sperren verwendet

Warum kann Redis verteilte Sperren ausführen?Prinzipielle Analyse

Was verteilte Sperren lösen müssen, ist eine parallele Sperrfunktion des gleichen Codes; diejenigen, die etwas über verteilte Redis-Sperren erfahren haben, müssen wissen, dass Redis zunächst setnx als verteilte Sperre verwendet und dann auf dieser Grundlage eine geplante Ablaufzeit festlegt.

Tatsächlich werden Leute, die das obige Bild verstehen, verstehen, wo das Problem liegt. Das erste ist das Atomizitätsproblem. Die beiden Operationen von setnx + Ablaufzeit müssen atomar sein, damit dies mit Lua-Skript gelöst werden kann 🎜>

Wie kann dann der Zeitpunkt für die Freigabe der Sperre bestimmt werden?

Egal wie viel Ablaufzeit wir festlegen, es gibt keine Garantie dafür, dass der gesperrte Code während dieses Zeitraums ausgeführt wird, daher ist es nicht gut, diese Zeit festzulegen

Wenn Wenn die Ausführung abgeschlossen ist, wird die Sperre nicht aufgehoben. Das Problem besteht darin, dass die Sperre niemals aufgehoben wird, wenn die Maschine in der Mitte der Ausführung ausfällt.

Wie funktioniert Redisson? obiges Problem lösen?

Es kapselt den Code auf eine optimierte Weise. Es ist nicht einmal erforderlich, die Ablaufzeit aktiv festzulegen Es hält die Sperre und aktualisiert die Ablaufzeit für 30 Sekunden. Durch dieses Design kann die Sperre beibehalten werden, bis sie aufgehoben wird, und sie kann die Sperre automatisch halten, auch wenn sie nicht mehr vorhanden ist >, und der Client, der die Sperre nicht erhalten kann, wird ständig versuchen, eine Schleife einzuschließen

Durch Aufzeichnen der Client-ID der Sperre kann diese als wiedereintrittsfähige Sperre konzipiert werden

Das obige ist der detaillierte Inhalt vonWarum kann Redis verteilte Sperren ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage