84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
问题:现在想要做Redis集群,也就是主从复制(一主多从),常规也就是“写入操作”往主,“查询操作”往从库。
那么依据惯例,应该是(1)使用中间件的方式分发读、写操作到对应的Redis节点(2)在代码里,对读和写的操作指定对应的Redis节点(例如这种:http://blog.csdn.net/u0129790...)
但是第二种方式似乎较繁琐,想采用第一种方式,但苦于没查到对应的资料,难不成都是采用第二种方式。想询问下大家,一般是怎么做的呢?
感谢:)
人生最曼妙的风景,竟是内心的淡定与从容!
泻药,然而并没有相关经验,以下属于强答,仅供参考
既然要采取写入操作往主库*1,查询操作往从库*N的策略。写入操作可以直接写死到对应的Redis节点。读取操作则需要一个分发的策略,如何从N里面选择出1个。
主库*1
从库*N
中间件方式,通常要求中间件服务器和Redis和PHP都有(延时、带宽)较好的连接。然后中间件服务器,无论是纯随机分配,或者根据IP分配,根据IP的Hash值分配,或者其它等等的方式,选择一个(经检验)可用的Redis节点,进行数据的获取(和检验、处理等)和转发。
纯随机分配
根据IP分配
Hash值分配
个人感觉,通常没必要用中间件,可以参考数据库的主从的思路,通常数据库连接的代码(或者连接配置),我们会分离出来单独作为一个文件,同样的,可以把Redis节点的选择分配也写到一个统一的单独的文件(问题里提到的那个博客里称之为Redis的缓存驱动)里,然后都使用这个,就好了。
泻药,然而并没有相关经验,以下属于强答,仅供参考
既然要采取写入操作往
主库*1
,查询操作往从库*N
的策略。写入操作可以直接写死到对应的Redis节点。
读取操作则需要一个分发的策略,如何从N里面选择出1个。
中间件方式,通常要求中间件服务器和Redis和PHP都有(延时、带宽)较好的连接。
然后中间件服务器,无论是
纯随机分配
,或者根据IP分配
,根据IP的Hash值分配
,或者其它等等的方式,选择一个(经检验)可用的Redis节点,进行数据的获取(和检验、处理等)和转发。个人感觉,通常没必要用中间件,可以参考数据库的主从的思路,通常数据库连接的代码(或者连接配置),我们会分离出来单独作为一个文件,同样的,可以把Redis节点的选择分配也写到一个统一的单独的文件(问题里提到的那个博客里称之为Redis的缓存驱动)里,然后都使用这个,就好了。