Redis 主从复制,读写分离的疑问???
问题:
现在想要做Redis集群,也就是主从复制(一主多从),常规也就是“写入操作”往主,“查询操作”往从库。
那么依据惯例,应该是
(1)使用中间件的方式分发读、写操作到对应的Redis节点
(2)在代码里,对读和写的操作指定对应的Redis节点
(例如这种:http://blog.csdn.net/u0129790...)
但是第二种方式似乎较繁琐,想采用第一种方式,但苦于没查到对应的资料,难不成都是采用第二种方式。
想询问下大家,一般是怎么做的呢?
感谢:)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
泻药,然而并没有相关经验,以下属于强答,仅供参考
既然要采取写入操作往
主库*1
,查询操作往从库*N
的策略。写入操作可以直接写死到对应的Redis节点。
读取操作则需要一个分发的策略,如何从N里面选择出1个。
中间件方式,通常要求中间件服务器和Redis和PHP都有(延时、带宽)较好的连接。
然后中间件服务器,无论是
纯随机分配
,或者根据IP分配
,根据IP的Hash值分配
,或者其它等等的方式,选择一个(经检验)可用的Redis节点,进行数据的获取(和检验、处理等)和转发。个人感觉,通常没必要用中间件,可以参考数据库的主从的思路,通常数据库连接的代码(或者连接配置),我们会分离出来单独作为一个文件,同样的,可以把Redis节点的选择分配也写到一个统一的单独的文件(问题里提到的那个博客里称之为Redis的缓存驱动)里,然后都使用这个,就好了。
最后使用了redis cluster,目前运行良好。