1 redis集群简介
1.1 集群的概念
所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态(高可用)。
1.1.1 使用redis集群的必要性
--问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还需要redis集群?
[1] 单个redis存在不稳定性。当redis服务 宕机了,就没有可用的服务了。
[2] 单个redis的读写能力是有限的。
总结:redis集群是为了强化redis的读写能力、确保服务的高可用。
1.1.2 redis集群相关术语
[1] redis集群中,每一个redis称之为一个节点。
[2] redis集群中,有两种类型的节点:主节点(master)、从节点(slave)。
[3] redis集群,是基于redis 主从复制模式实现的。
因此,学习redis集群,就是从学习redis主从复制模式开始。
2 redis主从复制模式
2.1 概念
主从复制模式中,有多个redis节点。其中, 有且仅有一个为Master,而Slave可以有多个。并且只要网络连接正常,Master会一直将自己的数据 同步更新给Slaves,保持主从同步。
2.2 特点
[1] 主节点Master 可读、可写。
[2] 从节点Slave 只读。
因此,主从模式可以提高读的能力,在一定程度上缓解了写的能力。因为能写仍然只有Master节点一个,可以将读的操作全部移交到从节点上,变相提高了写能力。
--主从模式架构图:
2.3 基于配置实现
2.3.1 准备
2.3.2 配置步骤
第一步:在/usr/local目录下,创建一个/redis/master-slave目录。
[root@node1 local]# mkdir -p redis/master-slave
第二步:在master-slave目录下,创建三个子目录6380、6381、6382
[root@node1 master-slave]# mkdir 6380 6381 6382
第三步:依次拷贝redis解压目录下的redis.conf配置文件,到这三个子目录中。
[root@node1 master-slave]# cp /usr/redis/redis-3.2.9/redis.conf ./6380/
[root@node1 master-slave]# cp /usr/redis/redis-3.2.9/redis.conf ./6381/
[root@node1 master-slave]# cp /usr/redis/redis-3.2.9/redis.conf ./6382/
第四步:进入6380目录,修改redis.conf,
[1] 将bind注释掉。
[2] 关闭保护模式。
[3] 并把port端口修改成6380。
第五步:进入6381目录,修改redis.conf。
[1] port端口改成6381。
[2] 开启主从复制模式。
第六步:进入6382目录,修改redis.conf,
[1] port端口改成6382。
[2] 开启主从复制模式。
2.3.3 测试
第一步:打开三个putty窗口,在每一个窗口中,启动一个redis节点。查看日志输出。(不要改成后台模式启动,看不到日志,不直观)。
[root@node1 master-slave]# cd ./6380 && redis-server ./redis.conf
[root@node1 master-slave]# cd ./6381 && redis-server ./redis.conf
[root@node1 master-slave]# cd ./6382 && redis-server ./redis.conf
第二步:另外再打开两个putty窗口,分别登陆Master和Slave。
[root@node1 ~]# redis-cli -p 6380
[root@node1 ~]# redis-cli -p 6381
第三步:在Slave上,进行读写操作,操作成功
127.0.0.1:6380> set user:name zs
OK
127.0.0.1:6380> get user:name
"zs"
127.0.0.1:6380>
第四步:在Slave上
**读操作执行成功,并且成功从6380上同步了数据
[root@node0719 ~]# redis-cli -p 6381
127.0.0.1:6381> get user:name
"zs"
**写操作执行失败(从节点,只能读,不能写)
127.0.0.1: