Redis 学习-Redis Sentinel
主从服务,在主服务挂掉之后需要我们手动操作,重新设置其他服务来充当主服务。
而 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的更多相关文章
- Redis学习——Redis持久化之AOF备份方式保存数据
		
新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...
 - Redis学习---Redis操作之Python连接
		
PyCharm下的Redis连接 连接方式: 1. 操作模式 redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使 ...
 - Redis学习——Redis事务
		
Redis和传统的关系型数据库一样,因为具有持久化的功能,所以也有事务的功能! 有关事务相关的概念和介绍,这里就不做介绍. 在学习Redis的事务之前,首先抛出一个面试的问题. 面试官:请问Redis ...
 - [转]Redis学习---Redis高可用技术解决方案总结
		
[原文]https://www.toutiao.com/i6591646189714670093/ 本文主要针对Redis常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis的几种常见 ...
 - Redis学习——Redis持久化之RDB备份方式保存数据
		
从这一个介绍里面知道,redis比memcache作为缓存数据库强大的地方,一个是支持的数据类型比较多,另一个就是redis持久化功能. 下面就介绍Redis的持久化之RDB! 一:什么是redis的 ...
 - Redis学习——redis.conf 配置文件介绍
		
学以致用 学在用前 参看文章: redis.conf 配置详解 Redis配置文件详解(redis.conf)-云栖社区 在Redis的使用过程,除了知道对Redis五种数据类型的操作方法之外,最主要 ...
 - redis学习——redis应用场景
		
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...
 - Redis学习--Redis数据类型
		
Redis的5种基本类型 1.String 2.Hash 3.List 4.Set 5.Sorted Set String常见用法 1.get key 返回value 2.set key value ...
 - Redis学习--Redis的安装与Jedis的简单使用
		
Redis安装 关于软件安装,之前是通过记录视频,前段时间发现可以直接阅读官网进行安装,这步省略 启动:前端启动直接启动src目录下redis-server,后端启动修改redis.conf中daem ...
 
随机推荐
- .NET C#获取当前网页地址信息
			
设当前页完整地址是:http://www.qiandabao.com/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名"www ...
 - Direct2D 学习笔记 前言
			
Direct2D模板程序网址:https://docs.microsoft.com/zh-cn/windows/win32/direct2d/direct2d-quickstart DirectX S ...
 - 白嫖百度 Tesla V100 笔记(在 AI Studio 上使用 tensorflow 和 pytorch 的方法)
			
登陆百度 AI Studio 并按照教程创建新项目 启动项目并进入控制台 下载 Anaconda3/Miniconda3 安装脚本 安装在 ~/work/*conda3 目录 输入命令 source ...
 - php csv 简单的导入
			
if($act == 'user_upload_do'){ global $db; $filename = $_FILES['file']['tmp_name']; if (empty ($filen ...
 - 最新 京东java校招面经 (含整理过的面试题大全)
			
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿等10家互联网公司的校招Offer,因为某些自身原因最终选择了京东.6.7月主要是做系统复习.项目复盘.LeetCode与牛客 ...
 - PGA+SGA的几个参数操作
			
1.sga_max_size;是静态的必须重启之后生效需要加scope=spfile;(不要超过物理内存值) SQL> alter system set sga_max_size=500M sc ...
 - CSS内联--与块级元素区别
			
内联元素:1.内联元素(inline)不会独占一行,相邻的内联元素会排在同一行.其宽度随内容的变化而变化. 2.内联元素不可以设置宽高 3.内联元素可以设置margin,padding,但只在水平方向 ...
 - 《Tsinghua os mooc》第11~14讲 进程和线程
			
第十一讲 进程和线程 进程 vs 程序 程序 = 文件 (静态的可执行文件) 进程 = 执行中的程序 = 程序 + 执行状态 进程的组成包括程序.数据和进程控制块 同一个程序的多次执行过程对应为不同进 ...
 - vue-cli webpack打包后加载资源的路径问题
			
vue项目,访问打包后的项目,输入路径后,页面加载空白.这时会有两类问题,都是路径问题. 1.一个是css,js,ico等文件加载不到,是目录里少了dist 打开页面时一片空白 解决办法: confi ...
 - c# 面向对象/继承关系设计
			
继承 RTTI RTTI 概念 RTTI(Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型. ...