私は現在、Booksleeveを使用してRedisがサポートするASP.NETSessionStateカスタムプロバイダーを開発しています。 Redisは、SessionStateに完全に適合しているように見えました(使用する必要がある場合)。理由は次のとおりです。
ですから、私たち(私の会社)はGitHubでのオープンソース化を検討しているので、これが誰にとっても役立つかどうか疑問に思っています。考え?
私は昨日これの最初のバージョンをリリースしました: https://github.com/angieslist/AL-Redis/blob/master/AngiesList.Redis/RedisSessionStateStore.cs
クライアントとして(Booksleeveではなく)ServiceStatck.Redis
を使用して、RedisベースのSessionStateStoreProvider
を作成しました GitHubにあります 。
Install-Package Harbour.RedisSessionStateStore
を使用してNuGet経由でインストールできます。
@NathanDのアプローチにはいくつかの癖がありました。私の実装では、ロックは個別のキー(Redisへのラウンドトリップが少ない)ではなく、セッション値とともに保存されます。さらに、ServiceStack.Redis
を使用するため、プールされた接続を使用できます。
最後に、テストされます。これは、@ NathanDのアプローチからの私の最大の転換点でした。すべてのユースケースを手動で実行せずに、実際に機能したかどうかを知る方法はありませんでした。
これは便利なだけでなく、この道を進む予定がある場合は、Redisのハッシュデータ型をよく調べてください。私たちのアプリケーションでは、セッションは基本的にキーと値の小さなコレクションです(つまり:{user_id: 7, default_timezone: 'America/Chicago', ...}
)ユーザーセッション全体が単一のRedisハッシュに保存されます。
セッションデータが類似している場合、ハッシュを使用するとデータのマッピングが簡素化されるだけでなく、Redisはスペースを使用します はるかに効率的に このアプローチでは。
私たちのアプリはRubyですが、 私たちが書いたもの からまだいくつかの用途が見つかるかもしれません。