InProc与Redis(Asp.Net MVC 5)中的会话存储,兼顾可扩展性

时间:2017-09-13 11:12:50

标签: asp.net asp.net-mvc redis scalability session-state

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

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

此外,InProc是否可以保留应用程序未来使用多个IIS工作器或使用不同的服务器(使用负载平衡)

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

1 个答案:

答案 0 :(得分:1)

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

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