StackExchange.Redis - Verwendung von LockTake / LockRelease

Ich verwende Redis mit StackExchange.Redis. Ich habe mehrere Threads, die irgendwann auf den Wert desselben Schlüssels zugreifen und diesen bearbeiten. Daher muss ich die Manipulation der Daten synchronisieren.

Wenn ich mir die verfügbaren Funktionen anschaue, sehe ich, dass es zwei Funktionen gibt, TakeLock und ReleaseLock. Diese Funktionen benötigen jedoch sowohl einen Schlüssel- als auch einen Wertparameter und nicht den erwarteten einzelnen zu sperrenden Schlüssel. In der Intellisene-Dokumentation und -Quelle auf GitHub wird nicht erläutert, wie die LockTake- und LockRelease-Funktionen verwendet werden oder was für die Schlüssel- und Wertparameter übergeben werden muss.

F: Was ist die korrekte Verwendung von LockTake und LockRelease in StackExchange.Redis?

Pseudocode-Beispiel für das, was ich vorhabe:

//Add Items Before Parallel Execution
redis.StringSet("myJSONKey", myJSON);

//Parallel Execution
Parallel.For(0, 100, i =>
    {
        //Some work here
        //....

        //Lock
        redis.LockTake("myJSONKey");

        //Manipulate
        var myJSONObject = redis.StringGet("myJSONKey");
        myJSONObject.Total++;
        Console.WriteLine(myJSONObject.Total);
        redis.StringSet("myJSONKey", myNewJSON);

        //Unlock
        redis.LockRelease("myJSONKey");

        //More work here
        //...
    });

Antworten auf die Frage(2)

Ihre Antwort auf die Frage