redis配置master-slave模式
由于云服务器存在闪断现象,项目线上会存在基于redis的功能在闪断时段内出现异常,所以redis需要做master-slave模式。直接上代码:
原单机redis,RedisConnectionFactory设置代码
```
@Bean
public RedisConnectionFactory jedisConnectionFactory(){
JedisPoolConfig poolConfig=new JedisPoolConfig();
poolConfig.setMaxIdle(5);
poolConfig.setMinIdle(1);
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true);
poolConfig.setTestWhileIdle(true);
poolConfig.setNumTestsPerEvictionRun(10);
poolConfig.setTimeBetweenEvictionRunsMillis(60000);
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(poolConfig);
//单机redis的host、port设置
jedisConnectionFactory.setHostName(redishost);
jedisConnectionFactory.setPort(redisport);
jedisConnectionFactory.setDatabase(0);
return jedisConnectionFactory;
}
```
哨兵节点设置代码
```
@Bean
public RedisConnectionFactory jedisConnectionFactory(){
JedisPoolConfig poolConfig=new JedisPoolConfig();
poolConfig.setMaxIdle(5);
poolConfig.setMinIdle(1);
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true);
poolConfig.setTestWhileIdle(true);
poolConfig.setNumTestsPerEvictionRun(10);
poolConfig.setTimeBetweenEvictionRunsMillis(60000);
//哨兵节点host、port设置,可设置多个哨兵,只需要链式新增 .sentinel(sentinelhost, sentinelport)
RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration() .master("mymaster")
.sentinel(sentinelhost, sentinelport);
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(sentinelConfig,poolConfig);
return jedisConnectionFactory;
}
```
由此,在master节点down了的时候,slave节点会自动升级到master。然后我们的服务会自动新建redis连接池到新的master节点。
```
2016-07-29 10:42:28,525 [MasterListener-mymaster-[10.10.180.37:26379]] INFO redis.clients.jedis.JedisSentinelPool - Created JedisPool to master at 10.10.129.188:6379
```
当哨兵节点down了的时候,服务日志会提示Lost connection to Sentinel,此时redis连接池不会断开,可继续使用,不影响业务,但是这时当master失去响应时就不会自动切换连接池了。为了避免这种情况可以配置多个哨兵(sentinel)节点,也可以通过sentinel配置文件的方式,当哨兵节点down了之后,通知运维同学。
```
2016-07-29 10:50:36,820 [MasterListener-mymaster-[10.10.180.37:26379]] ERROR redis.clients.jedis.JedisSentinelPool - Lost connection to Sentinel at 10.10.180.37:26379. Sleeping 5000ms and retrying.
2016-07-29 10:50:41,821 [MasterListener-mymaster-[10.10.180.37:26379]] ERROR redis.clients.jedis.JedisSentinelPool - Lost connection to Sentinel at 10.10.180.37:26379. Sleeping 5000ms and retrying.
2016-07-29 10:50:46,823 [MasterListener-mymaster-[10.10.180.37:26379]] ERROR redis.clients.jedis.JedisSentinelPool - Lost connection to Sentinel at 10.10.180.37:26379. Sleeping 5000ms and retrying.
2016-07-29 10:50:51,825 [MasterListener-mymaster-[10.10.180.37:26379]] ERROR redis.clients.jedis.JedisSentinelPool - Lost connection to Sentinel at 10.10.180.37:26379. Sleeping 5000ms and retrying.
2016-07-29 10:50:56,826 [MasterListener-mymaster-[10.10.180.37:26379]] ERROR redis.clients.jedis.JedisSentinelPool - Lost connection to Sentinel at 10.10.180.37:26379. Sleeping 5000ms and retrying.
redis配置master-slave模式的更多相关文章
- Redis的master/slave复制
摘自:Redis的master/slave复制 Redis的master/slave数据复制方式可以是一主一从或者是一主多从的方式,Redis在master是非阻塞模式,也就是说在slave执行数据同 ...
- Redis主从复制(Master/Slave)
Redis主从复制(Master/Slave) 修改配置文件 拷贝多个redis.conf文件分别配置如下参数: 开启daemonize yes pidfile port logfile dbfile ...
- jenkins的Master/Slave模式
一. Master/Slave模式 分担jenkins服务器的压力,任务分配到其它执行机来执行 Master:Jenkins服务器 Slave:执行机(奴隶机).执行Master分配的任务,并返回任务 ...
- Jenkins—Master/Slave模式
Jenkins可部署在windows或者linux平台上,项目系统的用户多数为windows系统.如果Jenkins部署在linux上,而自动化任务要在windows平台执行,那么就需要使用Jenki ...
- Redis主从复制(Master/Slave) 与哨兵模式
Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...
- redis之master.slave主从复制
简介 主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主 从库配置 配置从库,不配主库 配置从库: 格式: slaveof 主库ip ...
- MySQL master/slave 模式
1 .复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重 ...
- ActiveMQ集群支持Master/Slave模式
现在ActiveMQ, 在Failover方面有两种解决方案:Pure Master Slave和Shared File System Master Slave. 先看Pure Master ...
- ActiveMQ使用Zookeeper+LevelDb配置Master/Slave集群
前言: 本文介绍的AMQ集群是Master-Slave模式的,官网介绍三种方案: (1)基于共享文件系统的,(2)基于JDBC,(3)基于可复制的LevelDB. 关于三种方式的对比网上已经有很多,本 ...
随机推荐
- SSM框架中出现的几种注解的理解
转自IT·达人原文 Spring5:@Autowired注解.@Resource注解和@Service注解,有删改. 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物 ...
- B+树索引
结构上 B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而B+树关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引: B树中任何一个关键字只出现在一个结点中,而B+树中的关键 ...
- DGN格式转化为shp格式 【转】
其实本来,我就是需要把一个autocad的dwg/dgn格式的东西导入到google earth里面:但是首先我对dwg/dgn格式的东西根本就不熟:其次我拿到的dwg/dgn格式文件是用的HK80 ...
- 几个有用的javascript(日期比较,数字验证,数字和汉字长度计算)
1:日期大Js代码 //人员失效职位日期是否小于组织失效日期 function perDateInvalidate(){ var flag = true; //组织失效日期 var orgDate = ...
- JVM垃圾回收(GC)整理总结学习
基本回收算法 1. 引用计数(Reference Counting)比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0的对象.此算法最 ...
- 【Linux】shell判空
在shell中如何判断一个变量是否为空 博客分类: Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux 在shell中如 ...
- (转)[ActionScript 3] Google-ProtoBuf for AS
最近由于项目的需要,研究了一下protobuf.在这里分享一下经验,具体介绍网上也有不少,可以百度先了解一下. ProtoBuf在as中主要就是序列反序列化的作用,我们主要用它来代替amf,因为像c+ ...
- 修改ubuntu下网卡名不是eth0的问题
sudo nano /etc/default/grub 找到GRUB_CMDLINE_LINUX=""改为GRUB_CMDLINE_LINUX="net.ifnames= ...
- asp.net 输出微信自定义菜单json
这里使用LitJson.dll作json解析. 微信规定的自定义菜单json样式如下: { "button":[ { "type":"click&qu ...
- Service 生命周期
有了 Service 类我们如何启动他呢,有两种方法: • Context.startService() • Context.bindService() 1. 在同一个应用任何地方调用 start ...