我目前正在使用Booksleeve开发一个由Redis支持的ASP.NET SessionState自定义提供程序。 Redis似乎非常适合SessionState(如果必须使用它),因为:
所以,我想知道这对任何人都有用,因为我们(我的公司)正在考虑在GitHub上开源。想法?
我昨天发布了第一个版本:https://github.com/angieslist/AL-Redis/blob/master/AngiesList.Redis/RedisSessionStateStore.cs
答案 0 :(得分:16)
我创建了一个基于Redis的SessionStateStoreProvider
,can be found on GitHub使用ServiceStatck.Redis
作为客户端(而非Booksleeve)。
可以通过NuGet与Install-Package Harbour.RedisSessionStateStore
安装。
我在@ NathanD的方法中找到了一些怪癖。在我的实现中,锁存储与会话值而不是单独的密钥(减少到Redis的往返)。此外,由于它使用ServiceStack.Redis
,因此可以使用池化连接。
最后,它已经过测试。这是我对@ NathanD方法的最大转变。 实际无法知道它是否有效,而无需手动遍历每个用例。
答案 1 :(得分:3)
它不仅有用,而且如果你打算沿着这条路走下去,我强烈认为你会密切关注Redis的Hash数据类型。在我们的应用程序中,会话基本上是一小组密钥和值集合(即:{user_id: 7, default_timezone: 'America/Chicago', ...}
),整个用户会话存储在一个Redis散列中。
如果您的会话数据相似,使用Hash不仅可以简化数据映射,而且Redis使用空间much more efficiently进行此方法。
我们的应用程序是红宝石,但您仍可以从what we wrote找到一些用途。