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

4
我创建了一个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


你是在谈论将Redis中的自定义键与会话同时过期吗?还是担心当会话过期时,Redis中的会话项可能不会过期? - Liviu Costea
@LiviuCostea 谢谢你的问题 :) 我不知道 Redis 中的项目是否会与 Session 中的项目同时过期。 - fred
2个回答

3
Redis中设置的会话项的过期时间将在会话过期时过期,您不需要做任何事情。这将由RedisSessionStateProvider处理。

我让我的应用程序休眠了几分钟,但不知道 Redis 中的项目何时被删除。我们能检查这个值吗? - fred
1
配置您的 Web 应用程序以使用 Redis 会话提供程序,启动它,然后您可以使用一些 Redis 命令来查看将创建哪些键 http://redis.io/commands/keys 以及它们的生存时间是多少 - http://redis.io/commands/ttl。您还可以检查在您的会话过期后 Redis 键发生了什么。 - Liviu Costea

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

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

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

因此,asp.net为我们管理了这个逻辑,我们不需要担心它。
在redis客户端上,您可以使用两个命令keys *来查看所有键,ttl <key>来查看何时过期。

啊,谢谢你提醒超时属性,我忘了它 ;) - fred

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接