2015-07-03 4 views
3

Я создаю приложение примера MVC, используя RedisSessionStateProvider как пользовательское состояние сеанса. Я устанавливаю переменную в состояние сеанса, и она отлично работает. Но я не знаю, как синхронизировать истечение элементов в сеансе и Redis. Может ли кто-нибудь помочь?Как завершить удаление кеша Redis с помощью RedisSessionStateProvider?

Это параметры из web.config

 <!-- 
     <add name="MySessionStateStore" 
     host = "127.0.0.1" [String] 
     port = "" [number] 
     accessKey = "" [String] 
     ssl = "false" [true|false] 
     throwOnError = "true" [true|false] 
     retryTimeoutInMilliseconds = "5000" [number] 
     databaseId = "0" [number] 
     applicationName = "MvcTestApp" [String] 
     connectionTimeoutInMilliseconds = "5000" [number] 
     operationTimeoutInMilliseconds = "1000" [number] 
     connectionString = "<Valid StackExchange.Redis connection string>" [String] 
     loggingClassName = "<Assembly qualified class name that contains logging method specified below>" [String] 
     loggingMethodName = "<Logging method should be defined in loggingClass. It should be public, static, does not take any parameters and should have a return type of System.IO.TextWriter.>" [String] 
     /> 
    --> 

Я использую lateset версии: RedisSessionStateProvider версия 1.6.4 Redis версия 2.8.21

+0

Вы говорите об истечении своих пользовательских ключей от Redis одновременно с сеансом? Или вы боитесь, что ваши сеансовые элементы из Redis могут не истечь, когда истечет срок действия сеанса? –

+0

@ LiviuCostea спасибо за ваши вопросы :) Я не знаю, будут ли элементы из Redis истекли или нет одновременно с элементами в сеансе. – fred

ответ

1

Все поставщики состояния сеанса не имеют атрибута об истечении срока действия. Существует HttpSessionState.Timeout

Получает и задает время в минутах, которое разрешено между запросами до того, как поставщик состояния сеанса завершает сеанс.

Свойство Timeout не может быть установлено на значение, превышающее 525 600 минут (1 год). Значение по умолчанию - 20 минут.

Итак, asp.net управляет для нас такой логикой, нам не нужно об этом беспокоиться.

На клиенте redis вы можете использовать две команды keys *, чтобы увидеть все ключи, ttl <key>, чтобы увидеть, когда они истек.

+0

А, спасибо за свойство таймаута, я его забыл;) – fred

2

Истечение элементов сеанса, установленных в Redis будет истекает, когда сессия закончится, вам не нужно ничего делать. Он будет обработан RedisSessionStateProvider

+0

Я делаю свое приложение спит несколько минут, но не знаю, когда элементы в Redis будут удалены. Можем ли мы проверить это значение? – fred

+1

Настройте веб-приложение для использования провайдера сеансов Redis, запустите его, а затем вы можете использовать некоторые команды Redis, чтобы увидеть, какие ключи будут созданы http://redis.io/commands/keys и каково их время жить - http://redis.io/commands/ttl И вы также можете проверить, что произошло с ключами redis после истечения срока вашей сессии. –

Смежные вопросы