Redis集群的搭建和使用(学习笔记二)
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
上一篇: Linux进程下当前线程数查询
下一篇: vs2015怎么创建控制台应用程序?
推荐阅读
-
Linux学习笔记(二):文件目录管理和VIM编辑器的使用
-
机器学习实战学习笔记(二)-KNN算法(2)-使用KNN算法进行手写数字的识别
-
学习笔记-Plotly的基本使用方式(二)
-
Redis集群的搭建和使用(学习笔记二)
-
Redis学习笔记:Redis在C#中的使用
-
Spring-Cloud学习笔记(二)RestTemplate和Feign的使用方式以及部分注解的使用
-
Spring Cloud学习笔记(二)-构建高可用的Eureka Server集群
-
【原创】Mybatis学习笔记(二)——一些写mapper配置使用的最佳实践
-
【原创】Mybatis学习笔记(二)——一些写mapper配置使用的最佳实践
-
python学习笔记第二天:python的简单使用和类型的使用