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命令