集群,就是通过增加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态
必要性
单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。而且单个redis的读写能力是有限的。使用redis集群可以强化redis的读写能力,并且当一台服务器宕机了,其他服务器还能正常工作,不影响使用
名词
redis集群中,每一个redis称之为一个节点,集群无中心节点。
redis集群中,有两种类型的节点:主节点(master)、从节点(slave),多个主节点,每一个主节点都可读可写
redis集群,是基于redis主从复制实现
节点之间会互相通信,两两相连
好处
服务器的容量不足或者进行并发写操作的用户过多等情况下可以使用多台Redis集群的方式缓解压力
特点
集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N
集群通过分区来提供一定程度的可用性: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求
集群环境搭建
1.复制5个redis出来,作为3主3从,端口可以自定义
2.修改配置:redis.conf
port 7100 # 本示例6个节点端口分别为7100,7200,7300,7400,7500,7600
daemonize yes # r后台运行
pidfile /var/run/redis_7100.pid # pidfile文件对应7100,7200,7300,7400,7500,7600
cluster-enabled yes # 开启集群模式
masterauth passw0rd # 如果设置了密码,需要指定master密码
cluster-config-file nodes_7100.conf # 集群的配置文件,同样对应7100,7200等六个节点
cluster-node-timeout 15000 # 请求超时 默认15秒,可自行设置
3.分别以端口7100,7200,7300,7400,7500,7600 启动六个实例(如果是每个服务器一个实例则配置可一样)
[root@dev-server-1 cluster]# redis-server redis_7100.conf
[root@dev-server-1 cluster]# redis-server redis_7200.conf
4.然后通过命令将这个6个实例组成一个3主节点3从节点的集群
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7100 127.0.0.1:7200 127.0.0.1:7300 127.0.0.1:7400 127.0.0.1:7500 127.0.0.1:7600 -a passw0rd
优缺点
优点:
1、无中心架构,节点间数据共享,可动态调整数据分布;
2、节点可动态添加删除,扩张性比较灵活;
3、部分节点异常,不影响整体集群的可用性;
缺点:
1、集群实现比较复杂;
2、批量操作指令(mget、mset等)支持有限;
3、事务操作支持有限