【问题标题】:ASP.Net Session State using Redis使用 Redis 的 ASP.Net 会话状态
【发布时间】:2014-01-29 09:16:37
【问题描述】:

我正在探索存储会话状态的其他方法,并发现了一些使用 Redis 的网站。

问题是,该站点已经开发并部署在生产服务器上,因此我无法在一夜之间更改逻辑。

有没有办法,我们可以使用 Redis 实现自定义会话状态提供程序并使用相同的方法保存会话密钥。

Redis 在实现并发后如何处理并发,即会话键/值在每个会话中是唯一的,Redis 将如何将值存储在内存中。

是否有任何其他会话状态管理模型,我已经阅读过有关 memcached 的信息,但 redis 被首选为自定义会话状态实现的最佳模型。

我曾尝试使用 ServiceStack、AngiesList 实现,但无法实现。

有没有 ASP.Net & Redis 相关的实现,其中,我们可以将 Session State 从 InProc 转移到 Redis。

寻找有利的答复。

谢谢

【问题讨论】:

    标签: asp.net session redis


    【解决方案1】:

    请看TheCloudlessSky Implementation,我觉得它非常有用且简单明了。但是,如果您将 CustomObject(您的类)放入会话中,则需要确保它已标记为“Serializable”(c# example

    另外,如果您有 AnonymousType i.e. new {...},您至少需要创建一个简单的类来定义其值的类型并在其头部声明“Serializable”(c# example)。

    【讨论】:

    • 嗨,我也试过了,忘了说,实际上网站已经开发好了,我想把会话状态转移到 Redis,但我无法实现。如果它开始工作,那么我们将把所有的 Sessions 自定义对象声明为序列化。但我无法让它工作。请提出建议。
    【解决方案2】:

    如果我理解你的问题是正确的,你的情况和我的一样。请按照以下步骤操作

    1. 将此添加到您的 web.config

    1. 通过 NUGet 安装包

    Harbour.RedisSessionStateStore.1.1.0.0\lib\net40\Harbour.RedisSessionStateStore.dll

    【讨论】:

      【解决方案3】:

      在您的应用程序中搜索词缓存,如果它们存在,那么您必须使用序列化和反序列化。否则只需要在 web.config 中进行配置。所有会话对象都将指向配置中提到的新服务器

      【讨论】:

        【解决方案4】:

        Redis 是 Session 状态的最佳选择,即使现在大公司都在追随 Redis Cache。

        要实现这一点,您只需执行很少的步骤。

        1.) 添加RedisSessionStateProvider引用(使用NetGet包) 2.) 在您的 Web.config 中添加以下行

        <providers><add name="RedisSessionStateStoreProvider" type="RedisAspNetProviders.SessionStateStoreProvider, RedisAspNetProviders" dbNumber="2" keyPrefix="MyWebApplication/SessionState/" connectionStringName="RedisConnectionString" />
        
        </providers>   
        

        <outputCache defaultProvider="RedisOutputCacheProvider">  
        
          <providers>
        
            <add name="RedisOutputCacheProvider" type="RedisAspNetProviders.OutputCacheProvider, RedisAspNetProviders" connectionString="100.1000.100.258,connectTimeout=10000" />  
        
          </providers>
        
        </outputCache>
        

        【讨论】:

          猜你喜欢
          • 2014-10-27
          • 2011-06-07
          • 2010-11-02
          • 1970-01-01
          • 1970-01-01
          • 2015-03-10
          • 2015-08-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多