InProc与Redis(Asp.Net MVC 5)中的会话存储,考虑可伸缩性

InProc与Redis(Asp.Net MVC 5)中的会话存储,考虑可伸缩性,asp.net,asp.net-mvc,redis,scalability,session-state,Asp.net,Asp.net Mvc,Redis,Scalability,Session State,我无法决定是使用InProc还是Redis在高性能web应用程序中存储用户会话+少量额外数据(用户名、电子邮件等) 那么,两者的优点和缺点是什么呢?因为Redis选项的缺点是使用HTTP连接——网络延迟和使用HTTP使用的TCP连接 此外,InProc是否会阻止应用程序将来在不同的服务器上使用多个IIS工作程序(使用负载平衡) 注意:如果我使用Redis,我将通过自定义操作属性将会话状态注入控制器中的属性。在web场场景中,请求可以转到web场中的任何工作进程。如果同一会话的不同请求由不同的工作

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

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

此外,InProc是否会阻止应用程序将来在不同的服务器上使用多个IIS工作程序(使用负载平衡)


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

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

Redis作为分布式缓存工作,Redis会话状态提供程序在web场场景中工作良好,因为web场中的所有工作进程都将与单个Redis实例通信。将Redis实例实际放置在web场实例附近可以在一定程度上帮助减少延迟