我正在探索其他存储会话状态的方法,并使用Redis找到了一些网站。
问题在于,该网站已经在生产服务器上开发和部署,因此我无法在一夜之间改变逻辑。
有没有办法,我们可以使用Redis实现自定义会话状态提供程序,并使用相同的方式保存会话密钥。
Redis如何在实现并发后处理并发,即会话密钥/值在每个会话中是唯一的,Redis将如何将值存储在内存中。
是否有其他会话状态管理模型,我已阅读有关memcached的信息,但redis是首选的自定义会话状态实现。
我已尝试使用ServiceStack,AngiesList实现但无法实现相同的功能。
是否有任何与ASP.Net相关的实现? Redis,其中,我们可以将会话状态从InProc转移到Redis。
寻找有利的回复。
谢谢
答案 0 :(得分:1)
如果我理解你的问题,你的情况与我的相同。请按照以下步骤
Harbour.RedisSessionStateStore.1.1.0.0 \ lib中\ net40 \ Harbour.RedisSessionStateStore.dll
答案 1 :(得分:0)
请查看TheCloudlessSky Implementation,我发现它非常有用且简单明了。但是,如果您将CustomObject(您的类)放入会话,您需要确保它已标记为'Serializable'(c# example)
此外,如果你有AnonymousType i.e. new {...},你需要至少创建一个简单的类来定义它的值的类型,并在它的头上声明'Serializable'(c# example)。
答案 2 :(得分:0)
在应用程序中搜索单词缓存,如果它们存在,则必须使用序列化和反序列化。否则,您只需要在web.config中进行配置。所有会话对象都将指向配置
中提到的新服务器答案 3 :(得分:0)
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>