Stworzyłem SessionStateStoreProvider
oparty na Redis które można znaleźć na GitHub za pomocą ServiceStatck.Redis
jako klient (a nie Booksleeve).
Można go zainstalować za pośrednictwem NuGet za pomocą Install-Package Harbour.RedisSessionStateStore
.
Znalazłem kilka dziwactw w podejściu @NathanD. W mojej implementacji blokady są przechowywane w wartość sesji, a nie w osobnym kluczu (mniej podróży w obie strony do Redis). Dodatkowo, ponieważ używa ServiceStack.Redis
, może korzystać z połączeń w puli.
Wreszcie jest przetestowany. To był mój największy odwrót od podejścia @NathanD. Nie było możliwości właściwie wiedząc, czy zadziałało bez ręcznego przechodzenia przez każdy przypadek użycia.