场景
我们为了适应大流量访问,提高Redis读写效率,不能让访问洪峰到来时将读压力放在一台服务器上。所以我们需要提供读写分离。由一台Master服务器进行写,同时提供读的能力。再按需规划N台Slave从服务器提供只读能力,Master服务器一旦有写、更新、删除操作,将会立刻讲所有改变后的数据同步到Slave从服务器。
在实际应用中,读的频率远远高于写操作。所以用这种主从服务器架构提供读写分离操作,降低大访问量到来时,访问可以分配到多台服务器进行读操作的方式,来避免大量访问只在一台服务进行读写操作使得服务器宕机的问题。
服务器规划
我们规划三台服务器:
- Master:提供读写操作,一旦数据有改变,立刻同步最新数据到所有从服务器,ip:192.168.1.200,端口:6380
- Slave-A:从服务器A,提供只读操作,数据来自于Master同步,ip:192.168.1.201,端口:6381
- Slave-B:从服务器B,提供只读操作,数据来自于Master同步,ip:192.168.1.202,端口:6382
由于此处只是说明清楚原理,为了方便本地环境搭建,我们做一个伪分布式,将Master和Slave都部署到一台服务器上,指定不同端口。实际应用,应该部署到三台不同服务器保证Redis的高可用,后面我们会讲到如何使用主从切换,解决当Master宕机后保持高可用的方式。
主从配置
基本配置,IP、端口等配置,请参见Redis教程(一)- 安装
Master配置
在master服务器的redis根目录下的redis.conf配置文件增加:
requirepass 123456
Slave-A配置
在slave-a服务器的redis根目录下的redis.conf配置文件增加:
sla