Redis 主从,哨兵,集群实战
下载地址及版本说明
Redis 各版本下载地址: http://download.redis.io/releases/
版本说明:一般来说版本号第二位,偶数是稳定版本,奇数是在开发中的版本
本文基于Redis 版本为:3.2.12
理论依据文章为:
https://blog.csdn.net/sanri1993/article/details/101599701
https://blog.csdn.net/sanri1993/article/details/101620171
主从搭建
一主多从结构
结构
master 6379
slave 6380 -> 6379
slave 6381 -> 6379
搭建过程
- 配置节点
master 6379 redis6379.conf
port 6379
protected-mode no
daemonize yes
slave 6380 redis6380.conf
port 6380
protected-mode no
daemonize yes
slaveof localhost 6379
slave 6381 redis6381.conf
port 6381
protected-mode no
daemonize yes
slaveof localhost 6379
- 启动
./redis-server conf/redis6379.conf
./redis-server conf/redis6380.conf
./redis-server conf/redis6381.conf
- 查看是否启动成功
# 先看进程是否启动
netstat -tlnp | grep -E "6379|6380|6381"
# 查看拓扑结构
127.0.0.1:6379> info Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=10459,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=10459,lag=0
树状主从结构
结构
master 6379
slave 6380 -> 6379
slave 6381 -> 6380
搭建过程
和一主多从有变化的配置,其它环节一致
slave 6381 redis6381.conf
port 6381
protected-mode no
daemonize yes
slaveof localhost 6380
哨兵环境搭建
现切换成一主多从结构 ,在一主多从的情况下,搭建三个哨兵
结构
sentinel 26379 sentinel 26380 sentinel 26381
master 6379
slave 6380 -> 6379
slave 6381 -> 6379
搭建过程
- 配置哨兵节点
sentinel 26379
port 26379
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel 26380
port 26380
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel 26381
port 26381
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379 2
- 启动哨兵
./redis-sentinel conf/sentinel26379.conf
./redis-sentinel conf/sentinel26380.conf
./redis-sentinel conf/sentinel26381.conf
- 查看是否启动成功
# 查看进程是否启动成功
ps aux | grep sentinel
# 关闭主节点,看是否会选举一台从节点成为主节点
127.0.0.1:6379> shutdown
# 重启之前的主节点,一段时间后,查看是否成为 slave 节点
集群环境搭建
结构
cluster master ->cluster slave
master 6379 -> slave6389
master 6380 -> slave6390
master 6381 -> slave6391
搭建过程
- 配置节点配置信息
master 6379
port 6379
protected-mode no
daemonize yes
cluster-enabled yes
cluster-node-timeout 15000
# . 相对于命令运行路径,最好写绝对路径
cluster-config-file ./nodes-6379.conf
其它 master slave 只需要修改端口号即可,然后使用 ./redis-server <configfile> 启动
- 建立集群通信
# 将集群的每一个节点建立通信
192.168.108.128:6379>cluster meet ip port
# 查询集群节点
192.168.108.128:6379>cluster nodes
- 映射数据槽
redis集群有16384个哈希槽,要把所有数据映射到16384槽,需要批量设置槽
# 查询集群状态
192.168.108.128:6381> cluster info
cluster_state:fail
# 显示为 fail 是还没有映射槽,还不能提供服务
redis-cli -h 192.168.108.128 -p 6379 cluster addslots {0..5461}
redis-cli -h 192.168.108.128 -p 6380 cluster addslots {5462..10922}
redis-cli -h 192.168.108.128 -p 6381 cluster addslots {10923..16383}
- 配置主从,在从节点上操作,复制哪一个 master
192.168.152.128:6389> cluster replicate 9b7b0c22f95eb01fb9935ad4b04d396c7f99e881
192.168.152.128:6390> cluster replicate 5351c088472467ae485ed519cea271efda646bfa
192.168.152.128:6391> cluster replicate e718f126278072e1e180c3e518d73e0bc877b3dc
- 测试集群是否正常工作
# 登录上之后,执行不同的 set 操作,看能否跳转至其它节点执行命令
./redis-cli -c
SpringBoot 连接 redis 集群
- 引入 spring-boot-starter-data-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置节点信息
spring.redis.cluster.nodes=192.168.108.128:6379,192.168.108.128:6380,192.168.108.128:6381
一点小推广
创作不易,希望可以支持下我的开源软件,及我的小工具,欢迎来 gitee 点星,fork ,提 bug 。
Excel 通用导入导出,支持 Excel 公式
博客地址:https://blog.csdn.net/sanri1993/article/details/100601578
gitee:https://gitee.com/sanri/sanri-excel-poi
使用模板代码 ,从数据库生成代码 ,及一些项目中经常可以用到的小工具
博客地址:https://blog.csdn.net/sanri1993/article/details/98664034
gitee:https://gitee.com/sanri/sanri-tools-maven
Redis 主从,哨兵,集群实战的更多相关文章
- 【Redis学习专题】- Redis主从+哨兵集群部署
集群版本: redis-4.0.14 集群节点: 节点角色 IP redis-master 10.100.8.21 redis-slave1 10.100.8.22 redis-slave2 10.1 ...
- Redis主从&哨兵集群搭建
主从集群 在搭建主从集群前,我们先把Redis安装起来: #解压Redis压缩包 [root@master lf]# tar -zxvf redis-6.2.1.tar.gz -- #安装gcc [r ...
- 三千字介绍Redis主从+哨兵+集群
一.Redis持久化策略 1.RDB 每隔几分钟或者一段时间会将redis内存中的数据全量的写入到一个文件中去. 优点: 因为他是每隔一段时间的全量备份,代表了每个时间段的数据.所以适合做冷备份. R ...
- redis主从、集群、哨兵
redis的主从.集群.哨兵 参考: https://blog.csdn.net/robertohuang/article/details/70741575 https://blog.csdn.net ...
- redis的哨兵集群,redis-cluster
#主从同步redis主从优先1.保证数据安全,主从机器两份数据一主多从2.读写分离,缓解主库压力主redis,可读可写slave身份,只读 缺点1.手动主从切换假如主库挂了,得手动切换master ...
- redis:哨兵集群配置
最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- 走进Redis:哨兵集群
为什么需要哨兵 在 Redis 的主从库模式中,如果从库发生了故障,用户的操作是可以继续进行的,因为写操作是只在主库中进行的.那么,如果主库发生了故障,用户的操作将会收到影响.这时候可能会需要选择一个 ...
- Redis Sentinel哨兵集群
Redis Sentinel(哨兵集群)是一种高可用的redis部署方案.在集群中的redis-master服务挂掉时,无需人为干预,即可通过哨兵集群的自我调整,实现redis服务的持续可用. 哨兵集 ...
- redis的哨兵集群,自动切换主从库
Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能. 而 ...
- Redis高可用-主从,哨兵,集群
主从复制 Master-Slave主从概念 同时运行多个redis服务端,其中一个作为主(master),其他的一个或多个作为从(slave),主从之间通过网络进行通讯,slave通过复制master ...
随机推荐
- 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建
本节将介绍如何进行业务项目搭建. 本业务项目示例是简单的企业信息管理功能,业务项目采用Code First方式,搭建包括: 创建实体项目 创建实体数据表映射 创建业务处理项目 创建业务Web项目 搭建 ...
- php中++ --运算
$x = 5; echo $x; echo "---"; // echo ++$x + $x; //6+6=12 $x=6 // echo ++$x + 5; //6+5=12 $ ...
- Win10环境下安装压缩包版本MySQL-8.0.13
准备工作 系统环境:Windows 10 1803版本: 压缩包:MySQL-8.0.13 Windows zip包下载: 安装过程 1. 加载安装包到你的安装目录 将下载的MySQL压缩包解压并移到 ...
- 将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件
Python 一大重要的功能,就是可处理大量数据,那分不开的即是使用Excel表格了,这里我做下学习之后的总结,望对我,及广大同仁们是一个帮助Python处理Excel数据需要用到2个库:xlwt 和 ...
- 问题.spring源码转换为eclipse遇到的问题
1.下载spring源码 2.下载安装gradle,配置环境变量 3.在spring子项目下执行命令:gradle cleanidea eclipse,会生成对应的.project及.classpat ...
- 微信小程序获取手机号码看这篇文章就够了
前言 微信小程序获取手机号码,从官方文档到其他博主的文档 零零散散的 (我就是这样看过来 没有一篇满意的 也许是我搜索姿势不对) 依旧是前人栽树 后人乘凉 系列.保证看完 就可以实现获取手机号码功能 ...
- python修改内存,(修改植物大战僵尸)
import win32process # 进程模块 import win32con # 系统定义 import win32api # 调用系统模块 import ctypes # c语言类型 imp ...
- [Error]syntaxerror: non-ascii character '/xd6' in file
eclipse代码运行时显示:syntaxerror: non-ascii character '/xd6' in file 原因:如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明. 解 ...
- java1.8新特性(一)接口的默认方法
一 简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现. 在JDK1.8中打破了这样的认识,接口中的方法可以有 ...
- 实现一个基于码云Storage
实现一个简单的基于码云(Gitee) 的 Storage Intro 上次在 asp.net core 从单机到集群 一文中提到存储还不支持分布式,并立了一个 flag 基于 github 或者 开源 ...