Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Redis会话状态提供程序管理回退_Asp.net_Redis_Session State Provider - Fatal编程技术网

Asp.net Redis会话状态提供程序管理回退

Asp.net Redis会话状态提供程序管理回退,asp.net,redis,session-state-provider,Asp.net,Redis,Session State Provider,我使用Redis作为会话状态提供程序,但由于我有很多用户,有时Redis会宕机。因此,我希望有一个默认的会话状态提供程序,以便在第一个会话状态提供程序出现故障时使用 这可能吗? 还有其他解决办法吗 谢谢 因为我有很多用户,有时候Redis会宕机 我怀疑这应该是幕后的原因。你有足够的内存吗?可能有很多原因,但我怀疑问题是“很多用户”,除非你是谷歌、推特或流量极高的网站,毕竟Redis也是为这个用例设计的 因此,我将跳过如何切换状态提供程序的部分,然后转到: 还有其他解决办法吗 答案是 从官方文件:

我使用Redis作为会话状态提供程序,但由于我有很多用户,有时Redis会宕机。因此,我希望有一个默认的会话状态提供程序,以便在第一个会话状态提供程序出现故障时使用

这可能吗? 还有其他解决办法吗

谢谢

因为我有很多用户,有时候Redis会宕机

我怀疑这应该是幕后的原因。你有足够的内存吗?可能有很多原因,但我怀疑问题是“很多用户”,除非你是谷歌、推特或流量极高的网站,毕竟Redis也是为这个用例设计的

因此,我将跳过如何切换状态提供程序的部分,然后转到:

还有其他解决办法吗

答案是

从官方文件:

Redis Sentinel为Redis提供了高可用性。实际上 这意味着使用Sentinel可以创建Redis部署 在没有人为干预的情况下抵抗某种失败


ASP.NET的会话管道不支持回退到其他会话提供程序,因此回退功能必须烘焙到Redis会话状态提供程序中。但Redis提供程序只与Redis对话,所以您必须自己完成这项工作,或者在您自己的分支中,或者通过创建您自己的自定义会话提供程序来继承并包装对的访问(以及您的提供程序检测到Redis中断时希望使用的任何回退存储逻辑)

但是你现在看起来一团糟:你应该在哪里临时存储数据(进程内缓存?现在你在谈论粘性会话。SQL Server?还有另一个要管理的服务器)。。。而且,一旦Redis恢复运行,如何用临时存储中的活动会话重新填充它?有很多问题需要考虑,难怪微软不支持它


因此,正如@MatíasFidemraizer所提到的,您的最佳选择是集中精力改进您的Redis部署,以便它能够处理您的负载,并使用Redis Sentinel设置主从复制以执行自动故障切换。如果这项工作太多,那么有许多商业解决方案可以为您完成故障切换的繁重工作(我工作的公司有一个非常简单的产品,名为)

会话状态提供程序是什么技术?那么,您的问题中asp.net的标签在哪里…?您可以切换到备份状态服务器(或负载平衡所有),不确定是否有不同的模式。