主从服务,在主服务挂掉之后需要我们手动操作,重新设置其他服务来充当主服务。

而 sentinel 可以自动完成这一动作。

一、启动 redis 服务

启动 redis 服务可以查看前面章节,我们需要 1 主 2 从。

主 127.0.0.1:6379

从 127.0.0.1:6380、127.0.0.1:6381

二、启动 sentinel 服务

1. 配置文件 sentinel.conf

daemonize yes # 是否守护进程启动
pidfile "/var/run/redis-sentinel-26379.pid" # pid文件
logfile "26379.log" # 日志文件
dir "/usr/local/src/redis/redis-5.0.7/data" # 工作空间
sentinel monitor mymaster 127.0.0.1 6379 2 # redis 主节点的 ip 和端口,即使单机多实例也不能使用127.0.0.1

2. 启动服务

redis-sentinel sentinel.conf

3. 查看服务信息

redis-cli -p 26379 # 访问服务
info # 查看服务信息

4. 最少启动 3 个 sentinel 服务

将配置文件分别复制出来端口号为 26380、26381的两个服务。

3 个 sentinel 服务分别为:

127.0.0.1:26379、127.0.0.1:26380、127.0.0.1:26381

三、Java 集成 sentinel

1. 引入 jar 包

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

2. 客户端

String masterName = "mymaster";
Set<String> set = new HashSet<>();
set.add("192.168.116.128:26379");
set.add("192.168.116.128:26380");
set.add("192.168.116.128:26381"); JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName, set); while (true) {
Jedis jedis = null;
try {
jedis = jedisSentinelPool.getResource();
int index = new Random().nextInt(100000);
String key = "key-" + index;
String value = "value-" + index;
jedis.set(key, value);
System.out.println(key + " value is " + jedis.get(key));
TimeUnit.MILLISECONDS.sleep(10);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
}

执行上面程序时,可以将主节点进程杀死观察一下。

在控制台输出异常大约一两分钟后,senticenl 服务会恢复正常。

四、SpringBoot 集成 sentintl

1. SpringBoot 集成 redis 参考博客:

https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html

2. 在此基础上仅仅修改配置文件:

spring.redis.sentinel.master=mymaster # sentinel config 中配置的
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381 # 3个sentinel服务 # 下面配置注释掉
#spring.redis.database=0
#spring.redis.host=192.168.116.128
#spring.redis.port=6379

3. 注意点:

即使单机多实例情况下,配置文件中也不要使用 127.0.0.1,而应该使用真实 IP,否则故障转移可能会出现异常。

Redis 学习-Redis Sentinel的更多相关文章

  1. Redis学习——Redis持久化之AOF备份方式保存数据

    新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...

  2. Redis学习---Redis操作之Python连接

    PyCharm下的Redis连接 连接方式: 1. 操作模式 redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使 ...

  3. Redis学习——Redis事务

    Redis和传统的关系型数据库一样,因为具有持久化的功能,所以也有事务的功能! 有关事务相关的概念和介绍,这里就不做介绍. 在学习Redis的事务之前,首先抛出一个面试的问题. 面试官:请问Redis ...

  4. [转]Redis学习---Redis高可用技术解决方案总结

    [原文]https://www.toutiao.com/i6591646189714670093/ 本文主要针对Redis常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis的几种常见 ...

  5. Redis学习——Redis持久化之RDB备份方式保存数据

    从这一个介绍里面知道,redis比memcache作为缓存数据库强大的地方,一个是支持的数据类型比较多,另一个就是redis持久化功能. 下面就介绍Redis的持久化之RDB! 一:什么是redis的 ...

  6. Redis学习——redis.conf 配置文件介绍

    学以致用 学在用前 参看文章: redis.conf 配置详解 Redis配置文件详解(redis.conf)-云栖社区 在Redis的使用过程,除了知道对Redis五种数据类型的操作方法之外,最主要 ...

  7. redis学习——redis应用场景

    毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...

  8. Redis学习--Redis数据类型

    Redis的5种基本类型 1.String 2.Hash 3.List 4.Set 5.Sorted Set String常见用法 1.get key 返回value 2.set key value ...

  9. Redis学习--Redis的安装与Jedis的简单使用

    Redis安装 关于软件安装,之前是通过记录视频,前段时间发现可以直接阅读官网进行安装,这步省略 启动:前端启动直接启动src目录下redis-server,后端启动修改redis.conf中daem ...

随机推荐

  1. bat命令编写大全

    bat命令编写大全 摘自:https://blog.csdn.net/haibo19981/article/details/52161653 2016年08月09日 12:26:31 爱睡觉的猫L 阅 ...

  2. Mysql5.7数据库介绍

    (1).默认数据库介绍 information_schema 这个数据库保存了Mysql服务器所有数据库的信息.如数据库名.数据库的表.表栏的数据类型访问权限等. mysql 这个库是系统库,里面保存 ...

  3. PAT 甲级 1045 Favorite Color Stripe (30 分)(思维dp,最长有序子序列)

    1045 Favorite Color Stripe (30 分)   Eva is trying to make her own color stripe out of a given one. S ...

  4. Docker 持久存储介绍(十三)

    目录 一.Docker 数据存储 二.Bind mount 1.详细介绍 2.如何使用 -v or --volume 语法 --mount 语法 两者区别 3.使用场景 4.使用案例 存在目录 bin ...

  5. charles 偏好设置

    本文参考:charles 偏好设置 charles 偏好设置  偏好设置,注意作用如下 用户界面 视图 启动设置 警告设置 视图选项 头和主体一起查看 请求和响应页查看 结构试图布局 序列试图布局 显 ...

  6. 线程.Qt更新界面

    1.信号&槽 机制 即可 ZC:个人暂时 测试下来,类似是 PostMessage(...)的方式: a.是在各自的线程中执行代码, b.调用 emit不耗时(指的意思是 像调用PostMes ...

  7. EMR目录

    EMR目录: E-MapReduce 是阿里云上的开源大数据平台,用户可以登录集群主节点查看相关安装路径. 登录后也可以使用 env |grep xxx 查看. 或者,在EMR Hadoop集群,切换 ...

  8. Google 安装 Elasticsearch-head 插件

    下载插件:https://github.com/liufengji/es-head 安装插件: google --->更多工具---->扩展程序 将解压的elasticsearch-hea ...

  9. Appium+unittest+python登录app

    代码: # coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTes ...

  10. BFC的作用及其应用

    简单介绍BFC BFC 就是块级格式化上下文,是页面盒模型布局中的一种 CSS 渲染模式,相当于一个独立的容器,里面的元素和外部的元素相互不影响. 创建 BFC 的方式有: 1.html的根元素 2. ...