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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/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_Consistency - Fatal编程技术网

redis中如何保证主从数据的一致性

redis中如何保证主从数据的一致性,redis,consistency,Redis,Consistency,我制作了一个程序,可以根据一些规则将数字转换成一些序列号,并检查是否使用了序列号。我用redis做检查工作 首先,在slave中获取num1。当结果不是nil时,表示使用了序列号,所以返回“used” 其次,如果结果为nil,则在master中设置num1并返回“new”(一旦返回,nums表示“used”) 问题是主机在完成与从机的同步过程之前会崩溃,因此该号码可能不在从机中。此时在slave中获取num1,它返回“new”,但使用num1 如何在redis中确保主设备和从设备之间的数据一致性

我制作了一个程序,可以根据一些规则将数字转换成一些序列号,并检查是否使用了序列号。我用redis做检查工作

首先,在slave中获取num1。当结果不是nil时,表示使用了序列号,所以返回“used”

其次,如果结果为nil,则在master中设置num1并返回“new”(一旦返回,nums表示“used”)

问题是主机在完成与从机的同步过程之前会崩溃,因此该号码可能不在从机中。此时在slave中获取num1,它返回“new”,但使用num1


如何在redis中确保主设备和从设备之间的数据一致性?

redis使用异步复制,无法确保从设备实际收到给定的写入。数据丢失总是有一个窗口


Redis使用异步复制,无法确保从设备实际收到给定的写入。数据丢失总是有一个窗口


了解该命令-它允许您在采取进一步行动之前指定使用最新更改更新的从属设备的数量。

了解该命令-它允许您在采取进一步行动之前指定使用最新更改更新的从属设备的数量。

Redis只能最终实现一致性。为什么不读大师的书呢?此外,为了从崩溃中恢复,您应该将Redis配置为持久性。@对于\u堆栈,崩溃的主机可能无法重新启动。这是否意味着需要检查同步状态,然后再采取进一步的行动,如“返回'新'”。我认为您应该向主机进行写入和读取。如果主控失败,Redis sentinel将选择一个从控作为新的主控。然后切换到新主机进行读写。但是,您可能会丢失一些数据。如果您想实现数据丢失,您可能需要考虑其他数据库。ReDIS只能实现最终的一致性。为什么不读大师的书呢?此外,为了从崩溃中恢复,您应该将Redis配置为持久性。@对于\u堆栈,崩溃的主机可能无法重新启动。这是否意味着需要检查同步状态,然后再采取进一步的行动,如“返回'新'”。我认为您应该向主机进行写入和读取。如果主控失败,Redis sentinel将选择一个从控作为新的主控。然后切换到新主机进行读写。但是,您可能会丢失一些数据。如果你不想丢失数据,你可能需要考虑其他数据库。这个问题困扰了我很长时间。谢谢你的帮助。这个问题困扰了我很长时间。谢谢你的帮助。