InProc 与 Redis (Asp.Net MVC 5) 中的会话存储考虑了可扩展性

Session store in InProc vs Redis (Asp.Net MVC 5) with scalability in mind

我无法决定是使用 InProc 还是 Redis 在高性能 Web 应用程序中存储用户会话 + 一些额外数据(用户名、电子邮件...等)

那么两者各有什么优缺点呢?因为 Redis 选项有使用 HTTP 连接的缺点——网络延迟和消耗 HTTP 使用的 TCP 连接。

此外,InProc 是否会在未来使用多个 IIS worker 或在不同的服务器上使用多个 IIS worker(使用负载平衡)

注意:如果我使用 Redis,我会通过自定义操作属性将会话状态注入控制器中的 属性。

在网络场场景中,请求可以转到网络场中的任何工作进程。如果对同一会话的不同请求由不同的工作进程提供服务,则在这种情况下使用进程内会话状态存储可能会导致数据丢失。但是,如果只使用单个 Web 服务器,进程内会话状态提供程序应该是最快的,因为没有额外的网络延迟。

Redis 用作分布式缓存,Redis 会话状态提供程序适用于网络场场景,因为网络场中的所有各种工作进程都将与单个 Redis 实例进行通信。将 Redis 实例物理地放置在靠近网络场实例的位置有助于在某种程度上减少延迟。