Подтвердить что ты не робот

Redis поддерживает ASP.NET провайдера SessionState

В настоящее время я разрабатываю настраиваемый поставщик ASP.NET SessionState, который поддерживается Redis с помощью Booksleeve. Redis казался идеально подходящим для SessionState (если вы его должны использовать), потому что:

  • Redis может храниться долгое время, как RDBMS, однако он намного быстрее.
  • Хранилище данных Key/Value лучше подходит для интерфейса SessionState.
  • Так как данные не хранятся в процессе (например, поставщик сеанса по умолчанию), SessionState может перегружать веб-сервер, сбои и т.д.
  • Redis легко осколоть горизонтально, если это становится проблемой.

Итак, мне интересно, будет ли это полезно кому-либо, поскольку мы (моя компания) рассматриваем возможность открытого поиска на GitHub. Мысли?

UPDATE:


Я опубликовал первую версию этого вчера: https://github.com/angieslist/AL-Redis/blob/master/AngiesList.Redis/RedisSessionStateStore.cs

4b9b3361

Ответ 1

Я создал основанный на Redis SessionStateStoreProvider, который можно найти в GitHub, используя ServiceStatck.Redis в качестве клиента (а не в Booksleeve).

Он может быть установлен через NuGet с помощью Install-Package Harbour.RedisSessionStateStore.

Я нашел несколько причуд с подходом @NathanD. В моей реализации блокировки сохраняются со значением сеанса, а не отдельным ключом (менее округлые поездки до Redis). Кроме того, поскольку он использует ServiceStack.Redis, он может использовать объединенные соединения.

Наконец, он протестирован. Это был мой самый большой отход от подхода @NathanD. Не было никакого способа узнать, работает ли это, не запуская каждый случай использования вручную.

Ответ 2

Не только это было бы полезно, но я настоятельно рекомендую вам внимательно посмотреть на тип данных Hash Redis, если вы планируете пойти по этой дороге. В нашем приложении сеанс представляет собой в основном небольшую коллекцию ключей и значений (т.е. {user_id: 7, default_timezone: 'America/Chicago', ...}) со всем сеансом пользователя, хранящимся в одном хэше Redis.

Не только использование хэша упрощает сопоставление данных, если ваши данные сеанса схожи, но Redis использует пространство гораздо более эффективно с этим подходом.

Наше приложение находится в рубине, но вы все равно можете найти от то, что мы написали.