宁波网站建设信息,网站开发看书,店铺推广,优斗士做网站怎么样redis的集群模式简介#xff1a; redis的集群模式中可以实现多个节点同时提供写操作#xff0c;redis集群模式采用无中心结构#xff0c;每个节点都保存数据#xff0c;节点之间互相连接从而知道整个集群状态。 集群搭建步骤如下 (一台服务器模拟多台服务器) 1.创建6个配置…redis的集群模式简介 redis的集群模式中可以实现多个节点同时提供写操作redis集群模式采用无中心结构每个节点都保存数据节点之间互相连接从而知道整个集群状态。 集群搭建步骤如下 (一台服务器模拟多台服务器) 1.创建6个配置文件 把redis配置文件复制到指定位置并创建6个配置文件。 分别是6379、6380、6381、6389、6390、6391 这6个配置文件 2.分别编写每个配置文件内容如下(每个配置文件替换一下涉及的端口的内容)
include /opt/myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
# 设置集群#打开集群模式
cluster-enabled yes
#设置节点配置文件名
cluster-config-file nodes-6379.conf
#是定节点失联时间超过该时间(毫秒)集群自动进行主从切换
cluster-node-timeout 150003.启动这六个redis服务
redis-server redis6379.conf
redis-server redis6380.conf
......//查一下6个服务是否启动
ps -ef | grep redis6个节点服务都启动了并且生成了对应6个节点配置文件。 4.使用集群命令创建集群 需要进入到redis安转目录下的src文件当中使用redis-cli命令创建集群 注意高版本中已经默认安装ruby环境 。 输入命令如下
-- replicas 1 采用最简单的方式配置集群一台主机一台从机 正好三组
redis-cli --cluster create --cluster-replicas 1 192.168.126.130:6379 192.168.126.130:6380 192.168.126.130:6381 192.168.126.130:6389 192.168.126.130:6390 192.168.126.130:6391结果如下 输入yes确定如此分配之后结果如下搭建集群成功 5.集群连接
redis-cli -c -p 6379查看集群信息 cluster nodes主机,从机信息以及当前主机等信息。 6.插入值会根据计算送到对应插槽中(插槽概念会在下面中进行介绍)
set name chd计算key所对应的值去对应插槽的服务器中进行操作。 结果如下登陆的是6379set值得时候切换到了6380去插入值 要是插入多个值呢
//报错如下
192.168.126.130:6391 mset name chd age 13
(error) CROSSSLOT Keys in request dont hash to the same slot
192.168.126.130:6391 这时候需要用到组的形式进行插入
//{}来定义组的概念从而使key中{}内相同的内容的键值对放到一个slot(插槽)中
//mset k1{组} v1 k2{组2} v2 ...mset name{user} chd age{user} 18查询组内容如下
//计算key插槽中的值cluster keyslot user//计算插槽中有几个键cluster countkeysinslot 5474//返回插槽中键 限定10个数量cluster getkeysinslot 5474 107.redis插槽 当我们集群启动成功之后会出现如下日志 所有 16384个插槽已经覆盖。 简单介绍一下插槽的概念 Redis Cluster中有一个16384长度的槽的概念他们的编号为0、1、2、3……16382、16383。这个槽是一个虚拟的槽并不是真正存在的。
正常工作的时候Redis Cluster中的每个Master节点都会负责一部分的槽当有某个key被映射到某个Master负责的槽那么这个Master负责为这个key提供服务至于哪个Master节点负责哪个槽这是可以由用户指定的也可以在初始化的时候自动生成redis-trib.rb脚本。
集群中的每个节点负责处理一部分插槽。 举个例子 如果一个集群可以有主节点 其中 节点 A 负责处理 0 号至 5460 号插槽。 节点 B 负责处理 5461 号至 10922 号插槽。 节点 C 负责处理 10923 号至 16383 号插槽。
在Redis Cluster中只有Master才拥有槽的所有权如果是某个Master的slave这个slave只负责槽的使用但是没有所有权。 8.故障恢复特点 1.当主节点挂掉之后从节点会自动升为主节点 2.挂掉的主节点服务恢复之后会变成从节点。 3.如果某一段插槽的主从阶段都挂掉配置cluster-require-full-coverage为yes整个集群都会挂掉。 4.如果某一段插槽的主从阶段都挂掉配置cluster-require-full-coverage为no整个集群不会挂掉但是该插槽数据无法使用。