栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis之集群和集群搭建学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis之集群和集群搭建学习笔记

Redis集群 1 概念

​ Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1N。Redis集群通过分区( partition )来提供一定程度的可用性 ( availability ) :即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。

2 Redis集群搭建

(1)清空rdb等持久化文件

(2)创建redis6379.conf、redis6380.conf、redis6381.conf、redis6389.conf、redis6390.conf、redis6391.conf六个配置文件,并进行配置修改

​ 以6379为例,在基础配置上再添加几个集群配置

cluster-enabled yes 打开集群模式

cluster-config-file nodes-6379.conf 设定节点配置文件名

cluster-node-timeout 15000 设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换

同理,配置其他五个文件,只不过把6379改为对应的id

(3)启动6个redis服务

检查开启状态

查看nodes-xxxx.conf文件正确生成

(4)将6个节点合成一个集群

首先进入redis安装目录中的src目录下,此处我的redis安装在/opt下

使用redis-cli --cluster create --cluster-replicas 1 192.168.33.11:6379 192.168.33.11:6380 192.168.33.11:6381 192.168.33.11:6389 192.168.33.11:6390 192.168.33.11:6391

–replicas 1表示采用最简单的方式配置集群,一台主机,一台从机,正好三组

之后会询问是否接受这种分配方式,yes即可

如果出现一些问题,可以使用redis-cli --cluster fix 192.168.33.11:6379 这个命令来修复出问题的节点

redis-cli --cluster check 192.168.33.11:6379可以检查节点出现了什么问题

(5)连接集群

通过redis-cli -c -p 6379连接,-c表示采用集群策略连接,设置数据会自动切换到相应的主机,因为redis集群采用无中心连接方式,所以用任何一个节点进行连接都可以,即命令中的6379可以换成其他的端口号,如6380

(6)查看节点信息

通过 cluster nodes可以查看集群内节点信息

3 什么是slots

​ 一个Redis集群包含16384 个插槽(hash slot),数据库中的每个键都属于这16384个插槽的其中一个。
​ 集群使用公式CRC16(key) % 16384来计算键key属于哪个槽,其中CRC16(key)语句用于计算键key的CRC16校验和。集群中的每个节点负责处理一部分插槽

​ 向集群内插入k1 v1,经过计算,数据应该插入在12706这个插槽中,但是6379这个节点维护的是0-5460的插槽,12706并不在这个范围内,查找到在6381维护的范围内,所以直接插入到6381维护的插槽中,此时自动切换到6381节点

可以使用cluster keyslot [key]来计算该key在哪个插槽

使用cluster countkeysinslot [slot]可以查看该插槽内键的数量

cluster getkeysinslot [slot] [count] 返回count个slot插槽中的键

4 故障恢复

​ 如果主机宕机,从机会代替原主机成为主机,如果原主机再次连接,会成为从机。

​ 如果某一段插槽的主从都宕机,而配置文件中cluster-require-full-coverage配置为yes,那么整个集群都挂掉,而如果是no,那么该插槽数据全部不能使用,也不能存储

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号