在迁移到Redis会话状态时面临的问题

本文关键字:问题 会话状态 迁移 Redis | 更新日期: 2023-09-27 17:50:48

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

在迁移到Redis会话状态时面临的问题

我们经历了这样的变化,没有其他方法可以做到。它只是用一个属性标记你的类,所以这不是什么大事。当你发现一些类型根本不可序列化时,比如Object,然后你需要改变它,就会出现大问题。无论何时在进程外使用会话,所有内容都必须是可序列化的,因为它们将通过网络传递。

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

另外要注意的是,如果你在会话中保存了一些非常大的东西,它可能会超时——检查redis会话提供程序的throwOnError参数。实际上,缓存大项目(直接存储在redis中)比保存在Session中更好,这样它们就不会为每个请求加载和保存。