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
主服务器停机时redis群集恢复停机时间_Redis - Fatal编程技术网

主服务器停机时redis群集恢复停机时间

主服务器停机时redis群集恢复停机时间,redis,Redis,当Redis集群中的主节点宕机时,Redis将等待节点超时以将从节点升级为主节点。从机升级到主机可能需要额外的时间。在master下降到slave升级到master期间,写入/读取,尤其是写入将失败。如何确保零停机时间?我认为这是大多数数据库的常见问题。假设您有一个mongo replicaset,主服务器关闭,从服务器升级需要一段时间,您会丢失写操作,mongo shard或mysql也是如此 即使redis可以提供即时故障切换(这是不可能的),也无法保证您的写操作,除非您在每次操作中都使用A

当Redis集群中的主节点宕机时,Redis将等待节点超时以将从节点升级为主节点。从机升级到主机可能需要额外的时间。在master下降到slave升级到master期间,写入/读取,尤其是写入将失败。如何确保零停机时间?

我认为这是大多数数据库的常见问题。假设您有一个mongo replicaset,主服务器关闭,从服务器升级需要一段时间,您会丢失写操作,mongo shard或mysql也是如此

即使redis可以提供即时故障切换(这是不可能的),也无法保证您的写操作,除非您在每次操作中都使用AOF和磁盘写操作,但这将非常缓慢,并破坏redis的整个用途

为了更好地保证写入,一个解决方案是将数据推送到队列中,如kafka,并异步写入redis或任何其他数据存储。但随后又引入了一个堆栈,我们还必须担心它的故障转移


因此,我认为我们应该尝试将redis视为缓存,而不是永久性的数据存储

谢谢你的洞察力。在我的例子中,我使用redis作为缓存,但长期存储的数据是通过redis转储持久化的。因此,如果用户数据(这是一个恒定流)没有到达redis,我们将永远丢失数据。你建议改变这个设计吗?我是否应该坚持在redis之外长期存储?