欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis集群的搭建和使用(学习笔记二)

程序员文章站 2022-07-05 13:20:55
...

1、Redis集群:

1)、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
2)、节点的fail是通过集群中超过半数的节点检测失效时才生效,所以一个redis集群至少要三个redis服务器
3)、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
4)、redis-cluster把所有的物理节点映射到[0-16383]slot(不管有几个节点,slot的数量固定都是16384个)上,cluster 负责维护。
slot引入的作用是,为了让集群中每个节点放的key-value的数量均衡
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
(因为引入了slot的概念,所以一个集群最多只能有16384个节点)

2、Redis集群的搭建:(为了保证redis的高可用,所以每个redis都应该有一个备份机,所以一共需要6个服务器)

1)、搭建伪分布式,可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006
2)、在/usr/local/下创建一个redis-cluster文件夹,把/usr/local/redis/bin文件夹复制六个到redis-cluster文件夹中,命名为redis01-redis06
3)、修改六个redis的redis.conf配置文件,需要把cluster-enabled yes前的注释去掉,并且设置端口为7001-7006
4)、创建一个批处理,启动六个redis服务,在redis-cluter目录下,使用vim start-all.sh,在文件中输入

cd redis01
./redis-server redis.conf
cd redis02
./redis-server redis.conf
cd redis03
./redis-server redis.conf
cd redis04
./redis-server redis.conf
cd redis05
./redis-server redis.conf
cd redis06
./redis-server redis.conf

保存文件,要启动六个服务,执行start-all.sh文件即可,启动之前,使用chmod u+x start-all.sh,给这个文件执行权限
5)、使用ruby脚本搭建集群,就是将六个redis节点连接起来,在redis源代码文件夹里面的src目录下,有一个redis-trid.rb文件,将它复制到redis-cluster下
要使用ruby脚本,需要在线安装ruby的运行环境:

yum install ruby
yum install rubygems

将redis-3.0.0.gem文件传到linux系统,再使用gem install redis-3.0.0.gem 安装ruby脚本运行使用的包
最后,使用:

./redis-trib.rb create --replicas 1 192.168.25.130:7001 192.168.25.130:7002 192.168.25.130:7003 192.168.25.130:7004 192.168.25.130:7005 192.168.25.130:7006

命令来运行ruby文件,搭建redis集群
5)、连接集群,只要连接任一节点既可;redis01/redis-cli -p 7002 -c (-c:代表连接的是redis集群)
6)、关闭六个redis服务的批处理

[[email protected] redis-cluster]# vim shutdow-all.sh
redis01/redis-cli -p 7001 shutdown
redis01/redis-cli -p 7002 shutdown
redis01/redis-cli -p 7003 shutdown
redis01/redis-cli -p 7004 shutdown
redis01/redis-cli -p 7005 shutdown
redis01/redis-cli -p 7006 shutdown
[[email protected] redis-cluster]# chmod u+x shutdow-all.sh