两台机器,每台相同的 web-server+redis,每台都只读写自己机器上的 redis,两个 redis 可以怎么实现同步,有没有搞过的...

2019 年 9 月 29 日
 aganlengzi
5939 次点击
所在节点    程序员
42 条回复
Tink
2019 年 9 月 29 日
这个没办法吧
alamaya
2019 年 9 月 29 日
搞不懂你这里执著写两台 redis 的意义是啥
xmh51
2019 年 9 月 29 日
本地 cache 一致性问题很难搞。另外 redis 的性能已经非常高了 腾讯云实测 10wqps
df4VW
2019 年 9 月 29 日
@aganlengzi 每台机子读同一台机子的 redis,你这架构就没法 scale。。
rrfeng
2019 年 9 月 29 日
可以做双向同步,就是数据会有冲突,最简单的解决冲突就是覆写,后来的值为准,看你能不能接受了。

本地访问 Redis 带来的收益其实很小。除非你俩主机隔得很远
LeeSeoung
2019 年 9 月 29 日
两个 redis 当成独立的,应用请求数据库后 写两份 redis,与其考虑 redis 同步,这样不是更方便?
arloor
2019 年 9 月 29 日
做个伪 slave 去接受两个 redis 主节点的异步拷贝,然后发送给对方。你需要实现这个伪 slave,同时还是有一些问题难以解决的
1. 在网络波动下,redis 主会给伪 slave 发送全量同步的 rdb 文件,而 redis 没有暴露加载 rdb 的命令——当然可以通过修改 redis 源码然后重新编译安装实现暴露 rdb 命令

更多可以在 github 上搜 redis replicator 这个项目。

要深入理解,请看 redis 的 replicate.c 源码

说了很多,因为一句话根本说不清
chengran630
2019 年 9 月 29 日
你这样搞来搞去 两个服务器之间的网络连接始终存在,感觉没什么意义
或者如果有费用的话 推荐你 阿里云的高速通道,两台服务器专线连接
lisces
2019 年 9 月 29 日
twemproxy 或者 codis 搞一个 proxy
dangyuluo
2019 年 9 月 29 日
你可以了解一下分布式系统的 CAP 理论:

一个分布式系统最多只能同时满足一致性( Consistency )、可用性( Availability )和分区容错性( Partition tolerance )这三项中的两项。
xiaotianhu
2019 年 9 月 29 日
简化一下这样干
每台机器 webserver+memcache 做本地缓存,sql/模板 /配置一类的
其他的走独立 redis
能解决你大部分场景了
aganlengzi
2019 年 9 月 29 日
@rrfeng 嗯,是这样.
aganlengzi
2019 年 9 月 29 日
@lcy630409 有点可能是理想化的,一是代码不用动(如果 redis 有这种的话),二是只访问本地缓存快些(实际有限),像 @rrfeng 说的
aganlengzi
2019 年 9 月 29 日
@arloor 这样真的很麻烦了,/捂脸,这样可能真不如像 @LeeSeoung 说的这样干了
aganlengzi
2019 年 9 月 29 日
@Vegetable 弄成一主一从,然后往主写,都读本地...差不多
aganlengzi
2019 年 9 月 29 日
@alamaya 嗯,你是指像说的收益很小吧 @rrfeng
pubby
2019 年 9 月 29 日
另一个思路是:根据客户来源固定分配到某一台服务器
jhsea3do
2019 年 9 月 29 日
lz 你考虑 redis cluster ha ?
jhsea3do
2019 年 9 月 29 日
另外你如果对 kv 的高可用看重,而对 缓存速度 不看重的话,可以用 etcd / zookeeper, 这个主要做配置共享的。
passerbytiny
2019 年 9 月 29 日
你既然叫缓存,那么你的主存储还是关系数据库,为何不从缓存策略上去考虑。两个一摸一样的 Redis 缓存不是没有意义,但效益成本比例低到可以忽略。

如果你要是单纯的追求访问(读)速度,并且做好了读写分离,那么应当做成镜像而不是缓存。

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

https://v2ex.xtra.eu.org/t/605248

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

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

© 2021 V2EX