StackExchange.Redis verfügt über einige Sperrmethoden, wenn Sie versuchen, einen Abschnitt mit kritischen Codes davor zu schützen, mehrfach ausgeführt zu werden.
if (connectionMultiplexer.GetDatabase().LockTake(key, token, duration))
{
try
{
// do stuff
}
finally
{
connectionMultiplexer.GetDatabase().LockRelease(key, token);
}
}
Es gibt auch LockExtend
und LockQuery
Methoden.
Weitere detaillierte Informationen finden Sie unter https://stackoverflow.com/a/25138164/2497886.
Es lohnt sich auch, sich die Redis-Dokumentation zu verteilten Schlössern anzuschauen - http://redis.io/topics/distlock.
Die Bibliothek RedLock.net implementiert den Distlock-Algorithmus und unterstützt Dinge wie Blockieren/Wiederholen, um eine Sperre und automatische Sperrenerweiterung zu erhalten. (Disclaimer: Ich bin der Autor der Bibliothek)