linux整合RedisCluster集群
- 1.传统Redis集群存在那些问题
- 2.传统RedisCluster集群的原理
- 3.RedisCluster集群模式环境搭建
- 3.1创建Rediscluster目录
- 3.2将redis.conf在创建的目录下面分别复制一份,修改redis.conf文件每个配置文件内容
- 3.3启动我们的redis
- 3.4 连接一个redis
- 3.5不带密码的集群创建
- 3.6带密码的集群创建(后面加 -a 密码)
- 3.7 注意事项
- 3.7.1中间会出现询问can I set the above configuration?
- 3.7.2连接redis之后set key时如果出现(error) MOVED
- 3.7.3集群命令帮助
- 3.7.4查看集群节点
- 3.7.5 查看set key在哪个卡槽
1.传统Redis集群存在那些问题
Redis哨兵集群模式,每个节点都保存全量同步数据,冗余的数据比较多;而在Redis Cluster模式中集群中采用分片集群模式,可以减少冗余数据,缺点就是构建该集群模式成本非常高
2.传统RedisCluster集群的原理
Redis3.0开始官方推出了集群模式 RedisCluster,原理采用hash槽的概念,预先分配16384个卡槽,并且将该卡槽分配给具体服务的节点;通过key进行crc16(key)%16384 获取余数,余数就是对应的卡槽的位置,一个卡槽可以存放多个不同的key,从而将读或者写转发到该卡槽的服务的节点。 最大的有点:动态扩容、缩容。
3.RedisCluster集群模式环境搭建
3.1创建Rediscluster目录
mkdir rediscluster
cd rediscluster/
mkdir redis7000 redis7001 redis7002 redis7003 redis7004 redis7005
3.2将redis.conf在创建的目录下面分别复制一份,修改redis.conf文件每个配置文件内容
daemonize yes #后台启动
protected-mode no ; #允许外部访问
port 7000 #修改端口号,从7000到7005
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file 7000nodes.conf #自动生成
cluster-node-timeout 15000 #节点通信时间
dbfilename dump7000.rdb
logfile /usr/rediscluster/redis7000/redis.log
3.3启动我们的redis
remark:下面内容可设置成shell脚本一键启动,启动目录注意修改
/usr/redis/bin/redis-server /usr/rediscluster/redis7000/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7001/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7002/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7003/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7004/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7005/redis.conf
注意:如果集群设置有密码,需要连接redis之后添加配置
#设置从节点连接主节点的密码
config set masterauth '123456'
#刷新配置
config rewrite
3.4 连接一个redis
/usr/redis/bin/redis-cli -h 192.168.212.163 -p 7000
(error) CLUSTERDOWN Hash slot not served 说明没有分配hash槽
3.5不带密码的集群创建
/usr/redis/bin/redis-cli --cluster create 192.168.212.163:7000 192.168.212.163:7001 192.168.212.163:7002 192.168.212.163:7003 192.168.212.163:7004 192.168.212.163:7005 --cluster-replicas 1
(建议最好使用服务器的ip地址搭建)
3.6带密码的集群创建(后面加 -a 密码)
cd /usr/redis/bin
./redis-cli --cluster create 192.168.31.164:7000 192.168.31.164:7001 192.168.31.164:7002 192.168.31.164:7003 192.168.31.164:7004 192.168.31.164:7005 --cluster-replicas 1 -a 123456
3.7 注意事项
3.7.1中间会出现询问can I set the above configuration?
输入yes
3.7.2连接redis之后set key时如果出现(error) MOVED
修改为Redis的集群方式连接
usr/redis/bin/redis-cli -h 192.168.212.163 -p 7000 –c
3.7.3集群命令帮助
/usr/redis/bin/redis-cli --cluster help
3.7.4查看集群节点
cluster nodes
3.7.5 查看set key在哪个卡槽
通过KEYSLOT命令