redis集群
一,redis集群相关概念
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。
Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:
1.自动分割数据到不同的节点上。
2.整个集群的部分节点失败或者不可达的情况下能够继续处理命令
搭建集群环境准备
安装ruby
yum -y install ruby
yum -y install rubygems
gem install redis
错误处理
[root@root src]# gem install redis
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
解决方式参考此链接:https://blog.youkuaiyun.com/qq_38526573/article/details/87220510
解决完成后再次执行gem install redis命令
[root@root ~]# gem install redis
Fetching: redis-4.1.0.gem (100%)
Successfully installed redis-4.1.0
Parsing documentation for redis-4.1.0
Installing ri documentation for redis-4.1.0
Done installing documentation for redis after 1 seconds
1 gem installed
创建实例
在/opt目录下创建redis-cluster目录,并在该目录下创建6个redis实例
修改配置文件
修改端口号
打开cluster-enable前面的注释
注释掉绑定ip
保护模式修改为no
设置日志储存位置和dump的路径
注意重复修改6次
启动实例编写一个简单的脚本 start.sh
将每个节点下aof、rdb、nodes.conf本地备份文件删除;
cd /opt/redis-cluster/redis7001
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf
cd /opt/redis-cluster/redis7002
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf
cd /opt/redis-cluster/redis7003
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf
cd /opt/redis-cluster/redis7004
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf
cd /opt/redis-cluster/redis7005
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf
cd /opt/redis-cluster/redis7006
rm -rf dump.rdb nodes.conf appendonly.aof
src/redis-server redis.conf
改变脚本的权限模式
chmod 777 start.sh
然后启动./satrt.sh
创建集群
现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件
redis-cli --cluster create 192.168.119.12:7001 192.168.119.12:7002 192.168.119.12:7003 192.168.119.12:7004 192.168.119.12:7005 192.168.119.12:7006 --cluster-replicas 1
命令说明
选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点
之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave
redis-cli --cluster 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes, redis-cli --cluster 就会将这份配置应用到集群当中,让各个节点开始互相通讯,
测试集群
登陆命令
redis7001/src/redis-cli -h 192.168.88.121 -p 7001 -c
查看集群环境的相关命令
命令 | 说明 |
---|---|
cluster info | 打印集群的信息 |
cluster nodes | 列出集群当前已知的所有节点( node),以及这些节点的相关信息。节点 |
cluster meet | 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 |
cluster forget <node_id> | 从集群中移除 node_id 指定的节点。 |
cluster replicate <node_id> | 将当前节点设置为 node_id 指定的节点的从节点。 |
cluster saveconfig | 将节点的配置文件保存到硬盘里面。槽(slot) |
cluster addslots [slot …] | 将一个或多个槽( slot)指派( assign)给当前节点。 |
cluster delslots [slot …] | 移除一个或多个槽对当前节点的指派。 |
cluster flushslots | 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 |
cluster setslot node <node_id> | 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 |
cluster setslot migrating <node_id> | 将本节点的槽 slot 迁移到 node_id 指定的节点中。 |
cluster setslot importing <node_id> | 从 node_id 指定的节点中导入槽 slot 到本节点。 |
cluster setslot stable | 取消对槽 slot 的导入( import)或者迁移( migrate)。键 |
cluster keyslot | 计算键 key 应该被放置在哪个槽上。 |
cluster countkeysinslot | 返回槽 slot 目前包含的键值对数量。 |
cluster getkeysinslot | 返回 count 个 slot 槽中的键 |
cluster info命令
cluster nodes
至此集群搭建成功