Redis教程(二)- 读写分离

Redis教程(一)- 安装

场景

我们为了适应大流量访问,提高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配置文件增加:

slaveof 192.168.1.200 6380

masterauth 123456
requirepass 123456

Slave-B配置

在slave-b服务器的redis根目录下的redis.conf配置文件增加:

slaveof 192.168.1.200 6380

masterauth 123456
requirepass 123456
  • slaveof ,指定从属于哪台主机,使用[IP] [PORT],指定Master Redis主机的IP和端口
  • requirepass,认证密码,连接redis需要此密码
  • masterauth,是Slave验证Master主机的密码(Master主机的requirepass )

查看主从信息

  • 依次连接redis服务
$ redis-cli -h 192.168.1.200 -p 6380 -a 123456
$ redis-cli -h 192.168.1.201 -p 6380 -a 123456
$ redis-cli -h 192.168.1.202 -p 6380 -a 123456
  • 查看Master信息
$ 192.168.1.200:6380> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.201,port=6381,state=online,offset=9684,lag=1
slave1:ip=192.168.1.201,port=6380,state=online,offset=9684,lag=1
master_replid:3a12e54d4e778a389c706a558ad14853918ab1f9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:9684
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:9684

从信息可以看到:
- role:master,角色为主服务
- connected_slaves:2,有2个从服务连接

  • 查看Slave信息
$ 192.168.1.201:6381> info replication
# Replication
role:slave
master_host:192.168.1.200
master_port:6380
master_link_status:up
master_last_io_seconds_ago:11
master_sync_in_progress:0
slave_repl_offset:9866
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:3a12e54d4e778a389c706a558ad14853918ab1f9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:9866
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:9866

从信息可以看到:
- role:slave,角色为从服务
- master_host:192.168.1.200,主服务的ip
- master_port:6380,主服务的端口

你可能感兴趣的:(Redis教程(二)- 读写分离)