Redis 主从结构是否存在某一时刻数据不一致?

2022-07-20 10:52:46 +08:00
 Markxu0

在使用 MongoDB 副本集时,如果使用默认的读写偏好,插入数据后立刻查询,可能会出现刚插入到主库,还没来得及同步到从库,就在从库查询,然后导致这个记录没有被查询到。

那么在 Redis 主从结构中,是否也存在类似的情况呢,插入一条数据,然后立刻查询,可能会查询不到数据? 如果不存在类似情况,Redis 又是如何处理的呢?

1876 次点击
所在节点    程序员
8 条回复
Jooooooooo
2022-07-20 10:55:04 +08:00
那当然, 主从结构的存储都有这个问题

有几个解法, 比如刚插入就查的场景去查主库, 或者查从库没查到再反查一下主库
fcten
2022-07-20 11:00:08 +08:00
crysislinux
2022-07-20 11:21:03 +08:00
一般同步都是非常快的,所以一般就是
1. 如果是客户端插入的数据,客户端可以直接乐观更新,就显示本地的数据
2. 如果插入之后需要立即查,就等几秒钟,一般没啥问题
3. 其他客户端查到旧数据也无所谓,只要不是一会儿新一会儿旧就行,因为同步很快,一般也没问题
如果同步十几秒才完成,那就说明有问题了。

一楼说的刚插入就查主库实际做起来还是挺麻烦的。看你需求严格到哪种程度了。
crysislinux
2022-07-20 11:22:52 +08:00
我们的备库都没读,只用来做高可用了。负载全靠 cluster 抗 😂
crysislinux
2022-07-20 11:24:48 +08:00
这个问题是需要妥协的,Designing data-intensive applications 里有专门描述这个问题的章节,你可以找来看看。
lolizeppelin
2022-07-20 12:42:27 +08:00
所以读写分离要有 async 参数设置
async 查询连接从库
非 async 查询连接主库
lolizeppelin
2022-07-20 12:44:28 +08:00
数据库要完全主从同步也是可以的,不过要牺牲性能的...操作落地要等待从库完成

一搬的从库为了性能都是 async 同步的,主库不等从库完成
Saxton
2022-07-20 13:36:18 +08:00
主从结构必定存在延迟问题,这是绝对的,只能叫准实时而不能叫实时。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867475

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX