c# - 迁移到 Redis session 状态时遇到问题

标签 c# asp.net asp.net-mvc-4 session redis

我正在将 session 管理提供程序从 inproc 更改为 Redis session 状态,以解决 Web Garden 的共享 session 问题并提高我的 MVC 应用程序的性能。使用 Redis 的问题是在放入 session 之前必须对类进行序列化,这需要对我现有的解决方案进行大量修改。有什么办法可以克服这个问题吗?是否有任何提供程序可用于在运行时序列化对象?

最佳答案

我们经历了这样的改变,没有其他办法可以做到。它只是用一个属性标记你的类,所以这不是什么大事。 当您发现一些根本不可序列化的类型时,可能会发生大问题——比如一个对象,然后您需要更改它。每当您在进程外进行 session 时,所有内容都必须是可序列化的,因为它们将通过网络传输。

顺便说一下,你不会有更好的性能,没有什么比保存过程中的数据更好的了。在我们这边,我们注意到每个请求大约需要 4-500 毫秒 - 只是将数据加载和保存到 Redis。但是还有其他很大的优势,比如自动缩放。

另请注意,如果您在 session 中保存非常大的内容,它可能会超时 - 检查 redis session 提供程序的 throwOnError 参数。实际上缓存大项(将它们直接存储在 redis 中)然后将它们保存在 Session 中实际上会更好,因此它们不会为每个请求加载和保存。

关于c# - 迁移到 Redis session 状态时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457055/

相关文章:

c# - 带有 IIS 的 Kestrel - 运行时缺少 libuv.dll

asp.net - 通用 Web.Config 重写以删除查询字符串并添加 url seo slug

c# - ASP.NET MVC 4 将 Windows 身份验证应用于单个 Controller ?

c# - 使用 C# 中对象的值写入文件

无事件的 C# WPF 序列化 XAML

C# CSV Filehelpers 比较同一文件中的两行,添加和删除行

asp.net - 向 ASP.NET MVC 身份验证添加额外步骤

C#MVC : Cannot Debug in IIS Express

c# - 使用类库中的 View

c# - 自动重定向页面