New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Master-slave下一致性问题 #23
Comments
你好,关于你的两个问题,解答如下。 其一: 客户端向 slave 发送什么命令,要由程序来决定,如果程序向一个 slave 发送了写命令,那么这个写命令将被拒绝,因此程序有责任将正确的命令发送给正确的服务器 —— 将写命令发送给 master ,将读命令发送给 slave ,而这些目前需要使用程序手动去做。 有一些数据库也支持只读 slave ,但是它们的 slave 可以在接到写命令时,自动把客户端引导至 master ,并让客户端重新发送命令(这好像被称为“读写分离”特性?),而不会像 Redis 的 slave 那样,直接返回错误,不过我用过的 Ruby 和 Python 客户端都不支持这种特性,至于其他客户端是否支持,我不太清楚。 其二: 官网说的是对的, Redis 目前的主从复制没办法保持强制一致性:当你向 master 发送一条写命令之后, master 会向 slave 发送相同的写命令,而这条写命令在发送的过程中可能会有一段时间延迟,这段延迟时间之内, master 和 slave 的数据并不是完全一致的。 为了规避这一缺陷,如果你需要执行一个写然后读(write-and-read)操作,那么为了确保数据的正确性,你应该直接写和读 master ,而不要写 master ,然后读 slave ,因为这可能会引起问题。 Redis 的官网有提到将来可能会支持强一致性, Redis 的 github repo 上面也相关的实验性质的 branch 存在,有兴趣的话可以找找看。 huangz |
看到了,谢谢! |
:) |
看redis的介绍,在m-s下存在一致性的问题,两个问题没有理清,希望能得到一些指导
谢谢!
The text was updated successfully, but these errors were encountered: