redis 哨兵(sentinel)
redis哨兵
- 哨兵自动故障转移
- 自动通知应用最新master信息
- 无需担心,master挂了,程序不需要修改IP啥的,由哨兵自动完成
- 修改sentinel.conf
protected-mode no # 默认只允许本机访问sentinel服务
工具类
package redis.client.sentinel; import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool; import java.util.HashSet;
import java.util.Map;
import java.util.Set; /**
* Created by dailin on 2017/7/27.
*/
public class Redis_Sentinel { public static JedisSentinelPool sentinelPool = null;
private static JedisPoolConfig jedisPoolConfig = null; private Redis_Sentinel(){} private static void initSentinelPool(Set<String> sentinels){
synchronized (Redis_Sentinel.class){
if (sentinelPool == null) {
GenericObjectPoolConfig gPoolConfig=new GenericObjectPoolConfig();
gPoolConfig.setMaxIdle(10);
gPoolConfig.setMaxTotal(10);
gPoolConfig.setMinIdle(1);
gPoolConfig.setMaxWaitMillis(10);
gPoolConfig.setJmxEnabled(true);
sentinelPool = new JedisSentinelPool("mymaster",sentinels,gPoolConfig);
}
}
} public static Jedis getJedis(Set<String> sentinels){
initSentinelPool(sentinels);
return sentinelPool.getResource();
}
public static void returnJedis(Jedis jedis){
sentinelPool.returnResource(jedis);
}
}
测试类
import org.junit.Before;
import org.junit.Test;
import redis.client.sentinel.Redis_Sentinel;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis; import java.util.HashSet;
import java.util.List;
import java.util.Set; /**
* Created by dailin on 2017/7/27.
*/
public class TestSentinel {
Set<String> sentinel = null;
@Before
public void init()
{
sentinel = new HashSet<String>();
sentinel.add("192.168.56.130:26379");
sentinel.add("192.168.56.131:26379");
}
@Test
public void testSentinel(){
while(true) {
try{
Jedis jedis = Redis_Sentinel.getJedis(sentinel);
String result = jedis.get("dai");
HostAndPort currentHostMaster = Redis_Sentinel.sentinelPool.getCurrentHostMaster();
System.out.println("master:"+currentHostMaster.getHost()+"-port:"+currentHostMaster.getPort());
Redis_Sentinel.returnJedis(jedis);
System.out.println(result);
}catch (Exception e){
e.printStackTrace();
}
} }
}
这个测试类会一直访问redis,当master被停止后,程序抛出异常,过了一小会新的master被选出,程序又正常执行,所以使用jedis连接redis时,只需要传入sentinel的地址即可,自动在redis的master宕机后,自动更新连接新master信息。
redis 哨兵(sentinel)的更多相关文章
- redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用
目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...
- redis哨兵(Sentinel)、虚拟槽分区(cluster)和docker入门
一.Redis-Sentinel(哨兵) 1.介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,r ...
- Redis哨兵(sentinel)模式搭建
一.Sentinel介绍 之前骚了一波Redis的简介及应用场景,今天试了下他的哨兵模式: Sentinel是Redis的高可用性(HA)解决方案,由一个或多个Sentinel实例组成的Sentine ...
- Redis 哨兵 Sentinel
Redis Sentinel:redis集群应用,分布式系统. 多个Sentinal进程之间通过 gossip 协议来接收主服务器是否下线的信息,通过 Raft 一致性协议来决定故障转移及转移服务 ...
- redis哨兵sentinel.conf文件
关闭保护模式 //17行 protected-mode no 端口号 //21 port 26379 后台启动 //26 daemonize yes //84行 主机的ip加端口号 2 为票数 sen ...
- Redis容灾部署(哨兵Sentinel)
Redis容灾部署(哨兵Sentinel) 哨兵的作用 1. 监控:监控主从是否正常2. 通知:出现问题时,可以通知相关人员3. 故障迁移:自动主从切换4. 统一的配置管理:连接者询问sentinel ...
- SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...
- redis cluster + sentinel详细过程和错误处理三主三备三哨兵
redis cluster + sentinel详细过程和错误处理三主三备三哨兵1.基本架构192.168.70.215 7001 Master + sentinel 27001192.168.70. ...
- Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...
随机推荐
- javascript:getElementsByName td name
问题: 今天写动态生成HTML表格的时候需要用到统计td内的数据,在生成的时候设置了td的name属性,但是document.getElementsByName("tdname&quo ...
- Python之路 - 网络编程之粘包
Python之路 - 网络编程之粘包 粘包
- python3编译安装
linux下配置安装python3一.首先,官网下载python3的所需版本.wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz ...
- h5做列表 水平分割
移动端H5各种各样的列表的制作方法(三) by FungLeo 移动端H5各种各样的列表的制作方法(三) by FungLeo 前情回顾 在上一篇博文<移动端各种各样的列表的制作方法(二)> ...
- Keil 报错汇总
main.c(6): warning: #1-D: last line of file ends without a newline 解决:main.c 最后一行加回车就可以了. keil中文注释出 ...
- 微信小程序---picker
picker 从底部弹起的滚动选择器,现支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器. wxml: 普通选择器(mode = ...
- 手机端head部分
<!doctype html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
- 通过GCEASY 和 jfr 发现运行时问题
进入 /dev/shm 目录 ,gc-xxx-xx 的gc 文件 ,上次 gceasy 进行分析 另外 ,通过打开 飞行记录器 , 打开jmc 通过jmx 端口连接上去 ,并启用飞行记录器 ...
- 字符串相似度算法(编辑距离Levenshtein Distance)的应用场景
应用场景 DNA分析: 将DNA的一级序列如β-球蛋白基因的第一个外显子(Exon)转化为分子“结构图”,然后由所得“结构图”提取图的不变量,如分子连接性指数.以图的不变量作为自变量,再由相似度计算公 ...
- html自定义弹框
一.要实现的功能 1.弹框弹出时有遮罩 2.弹框内的文字过多时右侧有滚动条 3.根据执行结果变更弹框title的样式 二.具体实现 思路:定义一个有宽高的div,默认隐藏,当要显示时,设置为dis ...