如何使用RedisSessionStateProvider配置Redis缓存过期?

时间:2015-07-03 11:01:28

标签: asp.net-mvc redis session-state nosql

我创建了一个MVC示例应用程序,使用RedisSessionStateProvider作为自定义会话状态。我将变量设置为会话状态,效果很好。但我不知道如何同步会话和Redis中的项目到期。有人可以帮忙吗?

这是来自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]
      />
    -->

我使用的是最新版本: RedisSessionStateProvider版本1.6.4 Redis版本2.8.21

2 个答案:

答案 0 :(得分:2)

Redis中设置的会话项目的到期将在Session到期时到期,您无需对其进行任何操作。它将由RedisSessionStateProvider

处理

答案 1 :(得分:1)

所有会话状态提供程序都没有关于到期的属性。有一个HttpSessionState.Timeout

  

获取并设置会话状态提供程序终止会话之前允许的请求之间的时间量(以分钟为单位)。

     

Timeout属性不能设置为大于525,600分钟(1年)的值。默认值为20分钟。

所以,asp.net为我们管理这个逻辑,我们不用担心它。

在redis客户端上,您可以使用两个命令keys *查看所有密钥,ttl <key>以查看它何时过期。