在一个系统里,我们常常使用 Redis 作为我们的缓存系统,以提高接口访问的效率。
然而,当流量大到一定程度,读读写写,Redis 也顶不住了,怎么办?
一般来说,有如下几种方法可供解决:主从模式,Sentinel(哨兵)模式,Cluster模式。
这一节,介绍一下主从模式的实现。
1、概念
什么是主从模式?
主从模式也可以理解为读写分离,就是把原始的 Redis 库复制一份到另一个服务器的 Redis ,原始的 Redis 只提供写入功能,称为主(master),复制出来的 Redis 只提供读功能,成为(slave)。
可以是一主一从,也可以是一主多从。
通过这种读写分离的方式来实现降低 Redis 的访问压力,这就是主从模式的一个大致概念。
(以上是通过我个人理解自己撰写的概念,可能有误差,但应该差不多,标准释义还请自行查阅,(狗头)
2、环境搭建
既然是主从,那么有主有从,至少得有两个 Redis。
可以是在一台服务器上开启两个 Redis 实例,也可以是在两个服务器上来实现。
我这里使用的是两台服务器,192.168.31.219 作为 master,192.168.31.207 作为 slave。
Redis 的下载就不多说了,直接可 apt-get 就可以 install。
3、redis.conf 设置
前面我们是通过 apt-get 来安装的,所以 redis 的 conf 文件在 /etc/redis/redis.conf。
master设置
master 不需要进行额外设置,直接运行 redis 即可。
slave设置
slave 的设置也不难,在 /etc/redis/redis.conf 文件的末尾添加一行 所属的 master 即可。
语法如下:
slaveof 192.168.31.219 6379 #为master 的redis 的ip 和端口
其中,219 就是我们的 master 所在的服务器 IP,6379 就是 服务器上 redis 的端口。
运行:
sudo service redis restart
重启 Redis 服务,如果没意外的话,我们的主从集群就搭建好了。
4、查看主从信息
在 219 上,也就是我们的 master 上,键入 redis-cli 进入 redis 的交互界面,键入 info replication,可以看到类似下图,
就表示这个 role 是 master。
在 slave 服务器上同样输入 info replication ,可以看到类似如下:
这上面的 role 是 slave,有 master 的 ip 以及相应的端口。
master_link_status 的状态是 up,表示的是主从之间的状态时 连接的。
5、测试
在我们的 master 上,键入 redis-cli,进入 redis 的交互界面,输入:
set test 123
然后,在 slave 机器上,输入:
get test
就可以看到从 master 上同步过来的数据。
而当我们尝试在 slave 上尝试 del 操作,比如:
因为 slave 默认是 只可读的,不允许进行 更改或者删除操作,
以上大概就是 Redis 主从模式的一个搭建过程。
下一篇,会介绍一下,哨兵模式的搭建流程,以及在本人机器上跑通的一个实例。