I've created a Redis-based SessionStateStoreProvider
that can be found on GitHub using ServiceStatck.Redis
as the client (rather than Booksleeve).
It can be installed via NuGet with Install-Package Harbour.RedisSessionStateStore
.
I found a few quirks with @NathanD's approach. In my implementation, locks are stored with the session value rather than in a separate key (less round trips to Redis). Additionally, because it uses ServiceStack.Redis
, it can used pooled connections.
Finally, it's tested. This was my biggest turn off from @NathanD's approach. There was no way of actually knowing if it worked without running through every use case manually.