当前位置:网站首页>Redis的集群模式
Redis的集群模式
2022-08-02 00:09:00 【是九九不是酒酒】
1.为什么使用Redis集群模式
redis单机版,出现单机故障后,导致redis无法使用,如果程序使用redis,间接导致程序出错。
2.redis的集群模式
主从复制模式
哨兵模式
集群化模式
2.1.主从复制模式
2.1.1.什么是主从复制模式
一主多从模式。一个主节点,多个从节点,那么主节点可以负责:读操作,写操作。 从节点只能负责读操作,不能负责写操作。 这样就可以把读的压力从主节点分摊到从节点,以减少主节点的压力。当主节点执行完写命令,会把数据同步到从节点。
原则:配从不配主
2.1.2.如何配置主从复制模式
(1)准备条件
一主二从-----3台----开三个虚拟机--为了节省虚拟机,在一台主机开启三个redis服务。让7001作为主节点,7002,7003位子节点,在准备一个目录,将redis.cof这个文件复制到你新建的目录中
(2)修改配置文件
1.修改端口号为7001,7002,7003
2.修改rdb文件的名称
![]()
3.如果你的aof开启的了,就要关闭
![]()
(3)将修改好的文件拖入到你新建的目录中,最好重命名一下
(4)启动Redis服务

(5)登录一下客服端

(6)查看一下主从关系,命令是:info replication 你会发现都是主节点

(6)设置从节点 命令:slaveof 主节点的ip 主节点的端口号,设置好之后,查看一下主从关系
up 存活 down 死亡 salveof on one--关闭子节点


(7)主节点可以读和写。但是从节点只能读

2.2.哨兵模式
2.2.1.为什么使用哨兵模式
由于主从模式,主节点单机后,从节点不会自动上位。 增加一个哨兵服务,该哨兵时刻监控master,如果master挂了,哨兵会在从节点中选举一位为主节点【哨兵投票机制】默认是sentinel.cof文件。

2.2.2.如何使用哨兵模式
(1)修改配置文件--sentinel.cof

(2)启动哨兵
redis-sentinel sentinel.conf
(3)测试,关闭主节点,看一下子节点会不会成为主节点
shutdown 关闭Redis
2.3.集群化模式
2.3.1.为什么使用集群化模式
不管上面的主从还是哨兵模式,都无法解决单节点写操作的问题。如果这时写操作的并发比较高。这是可以实验集群化模式【去中心化模式】
2.3.2.集群化的原理
redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个整数结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。
当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。你可以理解成表的分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。
3.2.3.如何使用集群化模式
(1)前提
准备好三个主节点,三个从节点
6001 6002 6003 6004 6005 6006
创建一个目录,将我们配置文件放入目录中
(2)设置配置文件
Redis-1 防火墙--6379
bind 0.0.0.0
port 6001
daemonize yes
dbfilename dump6001.rdb
# 打开aof 持久化
appendonly yes
appendonly appendonly6001.aof
# 开启集群
cluster-enabled yes
# 集群的配置文件,该文件自动生成
cluster-config-file nodes-6001.conf
# 集群的超时时间
cluster-node-timeout 15000
(3)启动这六个redis服务

(4)分配槽
redis-cli --cluster create --cluster-replicas 1 192.168.118.110:7000 192.168.118.110:7001 192.168.118.110:7002 192.168.118.111:7003 192.168.118.111:7004 192.168.118.111:7005

注意: 一定要保证每个节点都没有数据。
(5)进入redis
redis-cli -c-h 192.168.223.155 -p 6001
加上-c 进入集群模式 不加-c进入单击模式
(6)添加数据
发现添加的数据在6003的接口,是因为输入key 的时候,进行了crc16计算,将计算出来整数 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点 ,可以把写操作均摊到不同的节点上,减轻了单个主节点的压力。

4.java连接redis
4.1.redis支持哪些语言可以操作


4.2.使用jedis
边栏推荐
- Detailed explanation of JSP request object function
- JSP如何使用page指令让JSP文件支持中文编码呢?
- 当奈飞的NFT忘记了Web2的业务安全
- GetHashCode方法与=
- Short video seo search optimization main content
- 回顾历史5次经济衰退时期:这一次可能会有何不同?
- Detailed explanation of Zadig's self-testing and tuning environment technical solution for developers
- 以交易为生是一种什么体验?
- 2022/08/01 学习笔记 (day21) 泛型和枚举
- JSP Taglib指令具有什么功能呢?
猜你喜欢

Short video SEO search operation customer acquisition system function introduction

Unknown CMake command “add_action_files“

链上治理为何如此重要,波卡Gov 2.0又会如何引领链上治理的发展?

路由策略

How to solve the error when mysql8 installs make

How to design a circular queue?Come and learn~

08-SDRAM: Summary

security CSRF Vulnerability Protection

Axure tutorial - the new base (small white strongly recommended!!!)

PHP从txt文件中读取数据的方法
随机推荐
What is the function of the JSP Taglib directive?
解析正则表达式的底层实现原理
JSP out.write()方法具有什么功能呢?
【无标题】
一篇永久摆脱Mysql时区错误问题,idea数据库可视化插件配置
632. 最小区间
认识USB、Type-C、闪电、雷电接口
为什么要使用MQ消息中间件?这几个问题必须拿下
不了解SynchronousQueue?那ArrayBlockingQueue和LinkedBlockingQueue不会也不知道吧?
使用jOOQ将Oracle风格的隐式连接自动转换为ANSI JOIN
以交易为生是一种什么体验?
Unity—四元数、欧拉角API+坐标系统
面试高频考题解法——栈的压入弹出序列、有效的括号、逆波兰表达式求值
TCL:在Quartus中使用tcl脚本语言进行管脚约束
Deliver cloud-native microservices applications with Zadig
How to design a circular queue?Come and learn~
协作乐高 All In One:DAO工具大全
基于相关性变量筛选偏最小二乘回归的多维相关时间序列建模方法
2022/08/01 学习笔记 (day21) 泛型和枚举
Graphical LeetCode - 1161. Maximum Sum of In-Layer Elements (Difficulty: Moderate)