Redis单机、主从、哨兵部署 [图文超详细, 内含Java代码 + 详细配置conf]


前言

本文会在CentOS7上安装Redis-5.0.3, 单机版–>主从架构–>哨兵架构,图文并茂,并配合Jedis代码,保证你快速上手Redis环境搭建!
CentOS7安装教程:https://blog.csdn.net/scm_2008/article/details/127230063

一、单机版

安装gcc和wget [可选]

# redis使用c语言编写,所以需要安装gcc,如已安装则忽略. 
# 通过gcc -v检查是否已安装
[root@localhost /]# yum install gcc
# CentOS7本身没有自带wget,如已安装则忽略. 
[root@localhost /]# yum install -y wget

下载+解压+编译

这里单独创建的/app目录, 按照命令一个个执行即可! (我使用的是root用户)

# 创建/app目录
[root@localhost /]# mkdir /app
[root@localhost /]# cd /app
# 下载到/app目录
[root@localhost app]# wget http://download.redis.io/releases/redis-5.0.3.tar.gz -P /app
# 解压
[root@localhost app]# tar xzf redis-5.0.3.tar.gz
# 编译
[root@localhost app]# cd redis-5.0.3
[root@localhost redis-5.0.3]# make

配置

我这里执行vi命令修改配置文件。(也可以使用MobaXterm工具将redis.conf下载到window本地修改)

[root@localhost redis-5.0.3]# vi redis.conf

修改如下两项( vi基本操作点这):

daemonize yes  #后台启动
protected-mode no  #关闭保护模式,开启的话,只有本机才可以访问redis

注释掉bind

#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)

vi基本操作

  1. 命令行模式
    该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。
  2. 文本输入模式
    在命令模式下输入插入命令i可以进入文本输入模式。
  3. 搜索关键字
    Esc键进入命令模式,直接输入/keyword,然后回车,输入n定位到下一处,大写N回到上一个位置
  4. 修改文本
    i键进入文本输入模式,进行修改;
    修改完成后,按:wq保存并退出vi编辑状态;
    如果不想保存直接按下:q!键,就能直接推出.

启动redis服务

[root@localhost redis-5.0.3]# src/redis-server redis.conf

验证是否成功

ps -ef|grep redis 

进入redis客户端玩玩,详细参见截图:
在这里插入图片描述
quit 命令退出客户端, 再用Redis Desktop Manager在window上连接也成功,至此Redis单机版搭建完成!
在这里插入图片描述

Jedis连接

pom 依赖

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

测试代码, 循环写入10个key
在这里插入图片描述
再到redis里查看一下:
在这里插入图片描述

二、主从模式

这里从一主两从入手,一主多从同理,我们这里简单起见,就在一台电脑上搭建了,我们按照下图的端口搭建:
在这里插入图片描述

搭建一主

我们上面单机版搭建的6379端口作为主就可以,太方便了! 我们接下来搭建两个从节点

配置6371 从节点

redis.conf拷贝出redis-6371.conf, 修改如下:

port 6371
pidfile /var/run/redis_6371.pid  # 把pid进程号写入pidfile配置的文件
logfile "6371.log"
dir /app/redis-5.0.3/data/6371 # 指定数据存放目录

# 注释bind
# bind 127.0.0.1

# 配置主从复制
replicaof 127.0.0.1 6379   # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replica-read-only yes  # 配置从节点只读

配置6372 从节点

redis-6371.conf拷贝出redis-6372.conf, 将6371修改成6372即可,不做赘述. 最后是这样:
在这里插入图片描述

创建data目录

存放两个从节点持久化的rdbaof的目录.
关于Redis持久化点这里:https://blog.csdn.net/scm_2008/article/details/127209438

[root@localhost redis-5.0.3]# mkdir /app/redis-5.0.3/data
[root@localhost redis-5.0.3]# mkdir /app/redis-5.0.3/data/6371
[root@localhost redis-5.0.3]# mkdir /app/redis-5.0.3/data/6372

启动主+从节点

操作和单机版的没什么两样, 只是多启动两个从节点。

# 启动主节点
[root@localhost redis-5.0.3]# src/redis-server redis.conf
# 启动6371从节点
[root@localhost redis-5.0.3]# src/redis-server redis-6371.conf
# 启动6372从节点
[root@localhost redis-5.0.3]# src/redis-server redis-6372.conf
# 验证是否成功
[root@localhost redis-5.0.3]# ps -ef|grep redis

在这里插入图片描述

测试6379上写数据,6371和6372是否能及时同步

启动多个客户端,分别连接6379, 6371, 6372

[root@localhost redis-5.0.3]# src/redis-cli
[root@localhost redis-5.0.3]# src/redis-cli -p 6371
[root@localhost redis-5.0.3]# src/redis-cli -p 6372

测试成功,已同步,如下图:
在这里插入图片描述

Jedis连接主从

与连接单机相同,不做赘述.

主从模式优缺点

  1. 优点: 主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。
  2. 不足: 最大的不足就是主从模式不具备自动容错和恢复功能,主节点故障,集群则无法进行工作,可用性比较低,从节点升主节点需要人工手动干预。

三、哨兵模式

sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)
在这里插入图片描述
所以我们在主从模式的基础上,按上图的端口搭建哨兵模式,这里哨兵节点不是固定的,1个,3个,5个等等,为什么不推荐2个4个,是因为半数以上选举算法,偶数并没有提高可用性,反而浪费了机器。

配置哨兵节点

sentinel.conf拷贝出sentinel-26379.conf, 修改如下:

port 26379
daemonize yes
pidfile /var/run/redis-sentinel-26379.pid
logfile "26372.log"
dir /app/redis-5.0.3/data/26379
# 最后的2指当有多少个sentinel认为一个master失效时有效。一般推荐:sentinel总数/2 + 1
sentinel monitor mymaster 127.0.0.1 6379 2

再从sentinel-26379.conf拷贝出sentinel-26371.confsentinel-26372.conf, 将26379修改成26371和26372即可,不做赘述. 最后是这样:
在这里插入图片描述

创建data目录

存放log文件,因为哨兵实例不存储实际数据!

[root@localhost redis-5.0.3]# mkdir /app/redis-5.0.3/data/26379
[root@localhost redis-5.0.3]# mkdir /app/redis-5.0.3/data/26371
[root@localhost redis-5.0.3]# mkdir /app/redis-5.0.3/data/26372

在这里插入图片描述

启动sentinel哨兵实例

# 启动3个哨兵节点
[root@localhost redis-5.0.3]# src/redis-sentinel sentinel-26379.conf
[root@localhost redis-5.0.3]# src/redis-sentinel sentinel-26371.conf
[root@localhost redis-5.0.3]# src/redis-sentinel sentinel-26372.conf
# 验证是否成功
[root@localhost redis-5.0.3]# ps -ef|grep sentinel

在这里插入图片描述

Jedis连接哨兵

与连接单机/主从的区别:用JedisSentinelPool代替JedisPool

在这里插入图片描述

我们分别连接到6379、6371、6372主从节点验证一下,10个mm全都写入了!

在这里插入图片描述

哨兵模式优缺点

  1. 优点:哨兵模式是基于主从模式的,解决可主从模式中master故障不可以自动切换故障的问题。
  2. 不足:
    (1)是一种中心化的集群实现方案:始终只有一个Redis主机来接收和处理写请求,写操作受单机瓶颈影响
    (2)集群里所有节点保存的都是全量数据,浪费内存空间,没有真正实现分布式存储。数据量过大时,主从同步严重影响master的性能
    (3)主机宕机后,在选举出新主机之前无法进行工作

四、源码下载(内含conf配置文件)

https://download.csdn.net/download/scm_2008/86746871
温馨提示:请务必修改如下图的ip地址
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天罡gg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值