42 votes

Redis adossés à des ASP.NET SessionState fournisseur

Je suis en train de développer un ASP.NET SessionState fournisseur personnalisé qui est soutenu par le Redis à l'aide de Booksleeve. Redis semblait être un ajustement parfait pour SessionState (si vous devez l'utiliser) parce que:

  • Redis pouvez stocker durablement comme un SGBDR, cependant il est beaucoup plus rapide.
  • Une Clé/Valeur de la banque de données s'adapte à l'interface de SessionState.
  • Étant donné que les données ne sont pas stockées dans le processus (comme la Session par défaut du fournisseur), SessionState peut vivre en dehors du serveur web redémarre, les accidents, etc.
  • Redis est facile d'éclat à l'horizontale si cela devient une nécessité.

Donc, je me demande si ce sera utile à quelqu'un, puisque nous (mon entreprise) envisagent open source sur GitHub. Pensées?

Mise à JOUR:


Je l'ai fait sortir une première version de ce hier: https://github.com/angieslist/AL-Redis/blob/master/AngiesList.Redis/RedisSessionStateStore.cs

16voto

TheCloudlessSky Points 7706

J'ai créé un Redis-fondé SessionStateStoreProvider qui peut être trouvé sur GitHub à l'aide de ServiceStatck.Redis que le client (plutôt que Booksleeve).

Il peut être installé via NuGet avec Install-Package Harbour.RedisSessionStateStore.

J'ai trouvé quelques bizarreries avec @NathanD de l'approche. Dans mon implémentation, les verrous sont stockées avec la valeur de session plutôt que dans une autre touche (moins d'allers-retours Redis). En outre, parce qu'il utilise ServiceStack.Redis, il peut utilisé des pool de connexions.

Enfin, il est testé. Ce fut ma plus grande désactiver à partir @NathanD de l'approche. Il n'y a aucun moyen de réellement savoir si cela a fonctionné sans courir à travers chaque cas d'utilisation manuelle.

5voto

SpiritMachine Points 972

Je ne peux pas upvote encore, mais je pense que c'est un projet louable. Je ne peux penser à des utilisations où je travaille. En fait, il peut être utile pour quelque chose que je travaille en ce moment.

3voto

Carl Zulauf Points 12826

Il serait non seulement utile, mais je considère fortement que vous regardez de près le Redis' Hash de type de données si vous prévoyez d'aller en bas de cette route. Dans notre application, la session est une petite collection de clés et de valeurs (c'est à dire: {user_id: 7, default_timezone: 'America/Chicago', ...}) avec l'ensemble de la session de l'utilisateur stockées un unique Redis hachage.

Non seulement ne l'aide de Hachage simplifier la cartographie des données si vos données de session est similaire, mais le Redis utilise l'espace de façon beaucoup plus efficace avec cette approche.

Notre application est en ruby, mais vous pouvez toujours trouver une certaine utilisation de ce que nous avons écrit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X