Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 34174|Antwort: 5

[.NET Core] .NET Core implementiert das Parsing des Distributed Lock-Prinzips basierend auf Redis

[Link kopieren]
Veröffentlicht am 22.09.2020 09:17:22 | | | |
In Geschäftsszenarien sind gleichzeitige Operationen von Inhalten, wie Commodity Inventory, derselben Datei usw., nicht erlaubt, und die Programmanwendung wird auf mehreren Servern bereitgestellt.
[Tatsächlicher Kampf] ASP.NET Core basiert auf Redis Distributed Lock Flash Sale
https://www.itsvse.com/thread-9397-1-1.html

Das zuvor geschriebene zk-basierte verteilte Schloss ist wie folgt:

.net/c# Zookeeper Distributed Lock-Implementierung [Quellcode]
https://www.itsvse.com/thread-4651-1-1.html

Was Sie auch wissen müssen, um diesen Artikel zu lesen:

Volatile vs. Interlocked vs. Lock
https://www.itsvse.com/thread-5023-1-1.html

C# Parallel-Berechnung Parallel.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

.NET Core implementiert verteilte Sperren basierend auf RedisDas Prinzip besteht darin, den SETNX-Befehl redis aufzurufen, wenn der Schlüssel bereits existiert, bewirkt der Befehl SETNX nichts. Der Befehl gibt 1 zurück, wenn die Einstellung erfolgreich ist, und 0, wenn die Einstellung fehlschlägt.

Der Hyperlink-Login ist sichtbar.

Erstellen Sie ein neues .NET Core 3.1-Konsolenprojekt, fügen Sie eine StackExchange.Redis-Referenz hinzu und verwenden Sie den nuget-Befehl wie folgt:

Wir rufen die StringSet-Methode der Bibliothek auf, über den Quellcode von StackExchange.Redis sehen wir, dass die StringSet-Methode die private Methode GetStringSetMessage aufruft, um verschiedene Set-Befehle über den Aufzählungswert von wann auszuführen; der Code ist wie folgt:

Wir führen den SETNX-Befehl 2000 Mal durch einen parallelen Testaufruf des Programms aus, der in zwei Abschnitten ausgeführt wird, wobei die Cache-Gültigkeit des Schlüssels 5 Sekunden beträgt, das heißt, der Schlüssel wird automatisch nach 5 Sekunden freigegeben, das heißt, das Schloss wird freigegeben.

Der Code lautet wie folgt:


Wie Sie sehen, sind insgesamt 2 erfolgreiche Einfügungen und 1998 gescheiterte Versuche genau das, was wir erwartet haben, und die Darstellungen sind wie folgt:


Zu diesem Zeitpunkt wurde das Schloss noch nicht freigegeben.
(Ende)









Vorhergehend:Ich konnte keinen Workaround für einen Teil des Weges "\bin\roslyn\csc.exe" finden.
Nächster:EF Core Series 2 kapselt OnModelCreating, erstellt Indizes mit Reflexionen und mehr
 Vermieter| Veröffentlicht am 26.09.2020 15:37:52 |
test123
Veröffentlicht am 20.11.2020 11:18:31 |
Wenn es beim Deployen von Containern eine Multi-Thread-Umgebung und eine Multi-Instanz-Umgebung gibt, gibt es dann ein Problem mit dieser Handhabung?
 Vermieter| Veröffentlicht am 20.11.2020 11:29:44 |
qiuyueming Veröffentlicht am 20.11.2020, 11:18
Wenn es beim Deployen von Containern eine Multi-Thread-Umgebung und eine Multi-Instanz-Umgebung gibt, gibt es dann ein Problem mit dieser Handhabung? ...

Multi-Instanz bedeutet Multi-Threading, und im Quellcode gibt Multi-Thread-Aufrufe Redis, und nur ein Thread erhält eine Sperre
Veröffentlicht am 22.03.2022 14:32:40 |
Unterstützung, Unterstützung
Veröffentlicht am 23.03.2022 11:15:30 |
Lernen Sie, dass das gut ist @
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com