42

私は現在、Booksleeve を使用して Redis に支えられた ASP.NET SessionState カスタム プロバイダーを開発しています。Redis は、(使用する必要がある場合) SessionState に最適なように思えました。理由は次のとおりです。

  • Redis は RDBMS のように永続的に格納できますが、はるかに高速です。
  • Key/Value データストアは、SessionState のインターフェイスにより適しています。
  • データは (デフォルトのセッション プロバイダーのように) インプロセスで保存されないため、SessionState は Web サーバーの再起動やクラッシュなどに影響を与える可能性があります。
  • Redis は、必要に応じて簡単に水平に分割できます。

だから、私たち(私の会社)はGitHubでオープンソース化することを検討しているので、これが誰にとっても役立つかどうか疑問に思っています. 考え?

アップデート:


昨日、これの最初のバージョンをリリースしました: https://github.com/angieslist/AL-Redis/blob/master/AngiesList.Redis/RedisSessionStateStore.cs

4

2 に答える 2

16

(Booksleeveではなく)クライアントとして使用してGitHubで見つけることができるRedisベースを作成しましたSessionStateStoreProviderServiceStatck.Redis

を使用してNuGetを介してインストールできますInstall-Package Harbour.RedisSessionStateStore

@NathanDのアプローチにはいくつかの癖があります。私の実装では、ロックは個別のキーではなくセッション値で保存されます(Redisへのラウンドトリップが少なくなります)さらに、を使用するため、ServiceStack.Redisプールされた接続を使用できます。

最後に、テストされます。これは、@NathanDのアプローチからの私の最大のターンオフでした。すべてのユースケースを手動で実行せずに、それが機能したかどうかを実際に知る方法はありませんでした。

于 2012-06-11T11:41:25.287 に答える
3

役に立つだけでなく、この道をたどる予定がある場合は、Redis の Hash データ型をよく確認することを強くお勧めします。私たちのアプリケーションでは、セッションは基本的にキーと値の小さなコレクション (つまり: {user_id: 7, default_timezone: 'America/Chicago', ...}) であり、ユーザー セッション全体が単一の Redis ハッシュに格納されています。

セッション データが類似している場合、Hash を使用するとデータのマッピングが簡単になるだけでなく、Redis はこのアプローチによりスペースをより効率的に使用します。

私たちのアプリは ruby​​ で作成されていますが、私たちが書いたものをまだ使用できるかもしれません。

于 2011-11-10T21:25:32.597 に答える