什么是Redis集群
Redis 集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis 实现, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset)。
Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)。
Redis 集群为了保证一致性(consistency)而牺牲了一部分容错性: 系统会在保证对网络断线(net split)和节点失效(node failure)具有有限(limited)抵抗力的前提下, 尽可能地保持数据的一致性。
集群的容错功能是通过使用主节点(master)和从节点(slave)两种角色(role)的节点(node)来实现的:
主节点和从节点使用完全相同的服务器实现, 它们的功能(functionally)也完全一样, 但从节点通常仅用于替换失效的主节点。
不过, 如果不需要保证“先写入,后读取”操作的一致性(read-after-write consistency), 那么可以使用从节点来执行只读查询。
参考链接
分片、哨兵有那些缺点
1.分片缺点: 分片的主要的功能是实现内存的扩容的. 但是没有高可用的效果.使用哨兵实现高可用。
2.哨兵缺点: 数据没有扩容,哨兵本身没有高可用机制
Redis集群优点
实现了内存的扩容也实现了高可用
Redis集群搭建
说明:这里使用三个主节点各自都有一个从节点
1.在Redis安装目录中创建一个cluster文件夹
2.在cluster中创建6个文件夹
3.把redis.conf配置文件(在安装目录)复制一份到7000文件夹并修改其中以下内容
IP绑定注释掉
关闭保护模式和修改相应的端口号
后台启动
修改pid存放位置
修改持久化文件路径
修改内存优化策略
开启集群配置
-
复制修改后的文件到7001-7005中
4.批量修改,分别将7001-7005文件中的所有为7000改为对应的端口号的名称
分别打开7001-7005的配置文件批量把7000改成相应的端口号
- 由于需要启动多台服务编写麻烦,所有通过脚本编辑启动
在cluster目录创建脚本
vim start.sh
#内容为:
redis-server 7000/redis.conf &
redis-server 7001/redis.conf &
redis-server 7002/redis.conf&
redis-server 7003/redis.conf&
redis-server 7004/redis.conf&
redis-server 7005/redis.conf&
ps -ef | grep redis &
#创建停止服务脚本文件
vim stop.sh
#内容:
#!/bin/sh
redis-cli -p 7000 shutdown &
redis-cli -p 7001 shutdown &
redis-cli -p 7002 shutdown &
redis-cli -p 7003 shutdown &
redis-cli -p 7004 shutdown &
redis-cli -p 7005 shutdown &
redis-cli -p 7006 shutdown &
redis-cli -p 7007 shutdown &
redis-cli -p 7008 shutdown &
ps -ef| grep redis &
- 启动redis节点
sh start.sh
7.创建redis集群
#5.0版本及以上执行
redis-cli --cluster create --cluster-replicas 1 192.168.126.129:7000 192.168.126.129:7001 192.168.126.129:7002 192.168.126.129:7003 192.168.126.129:7004 192.168.126.129:7005
中途会让你选择是否同意设置输入yes就好了
到此集群环境搭建完毕
8.查看节点信息
查看集群信息cluster info