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

而 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. mouse without borders无界鼠标使用教程

    mouse without borders无界鼠标使用教程 摘自https://www.jianshu.com/p/6a0209ad03f8   老黑随笔 关注  0.4 2018.05.18 11: ...

  2. java编写的一段简单的网络爬虫demo代码

    功能: 从网站上下载附件,并从页面中提取页面文章内容 关于NIO 在大多数情况下,Java 应用程序并非真的受着 I/O 的束缚.操作系统并非不能快速传送数据,让 Java 有事可做:相反,是 JVM ...

  3. 原创:Mac AppleScript 自动登录两个QQ

    前提,已有登录过的账号,且没有设置为自动登录 tell application "QQ" activate tell application "System Events ...

  4. python迭代器、生成器、装饰器之迭代器

    迭代是Python最强大的功能之一,是访问集合元素的一种方式. 一般分为可迭代对象,迭代器,可迭代对象不一定是迭代器,但迭代器一定是可迭代对象 1.可以直接作用于for循环的数据类型 第一类:集合数据 ...

  5. SmartCode

    SmartCode(https://github.com/Ahoo-Wang/SmartCode) SmartCode = IDataSource -> IBuildTask -> IOu ...

  6. Npcap.资料

    1.ZC:Npcap 是 WinPcap停更之后的继承者.我尝试了 Win7中发送raw tcp syn,它的代码和 使用WinPcap的基本一致. Developing software with ...

  7. C#实现动态发布IIS站点帮助类

    准备工作: 1.引用 System.DirectoryServices 系统程序集 2.引用 Microsoft.Web.Administration 程序集,类库位置在 C:\Windows\Sys ...

  8. 多线程调用有参数的方法---c# Thread 与 Task

    C#实现多线程的方式:Task——任务   简介 .NET 4包含新名称空间System.Threading.Tasks,它 包含的类抽象出了线程功能. 在后台使用ThreadPool. 任务表示应完 ...

  9. Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...

  10. 乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符

    大家好,我是乐字节的小乐,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对 ...