redis主从集群 主挂掉 java怎样调用从
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis主从集群 主挂掉 java怎样调用从相关的知识,希望对你有一定的参考价值。
从机的redis命令行输入slaveofnoone转换为主机,然后要么修改主机ip要么修改java程序中的主机ip地址。另外建议看下redis sentinel 主从切换(failover)解决方案 参考技术A
主从集群,原主数据库挂掉,选举出一个从数据库升格为主数据库,那么主数据库的IP和端口会变。要跟踪这个变化也行,但是很麻烦。幸运的是,可以由哨兵sentinel,通过主数据库名字来实时获取当前的地址和端口。当然,开启sentinel时会设置主数据库名:
sentinel monitor mymaster 127.0.0.1 6379 1调用示例如下:
public class Apppublic static void main( String[] args )
Set<String> sentinels = new HashSet<String>();
sentinels.add("127.0.0.1:26379");
JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);
Jedis jedis = pool.getResource();
jedis.set("jedis", "jedis");
System.out.println(jedis.get("jedis"));
希望能帮到,搜索到这个提问的网友。
redis第三篇~redis的主从
一 简介:今天咱们来聊聊redis的主从架构
二 前沿:
和其他数据库一样,redis最早的也是主从架构,后来版本出现了高可用的搭配,在主挂掉后,从库提供读写。
三 搭建:
1 准备两台redis服务器
2 从库配置文件中添加: slaveof masterhost port
3 如果主库启用了密码认证,从库配置文件中还要添加: masterauth password
4 1 从库查看启动日志 Full resync from master:
2 登录redis 查看key 发现已经同步
四 原理
1 redis首次同步
Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
1)从服务器连接主服务器,发送SYNC命令;
2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
2 增量同步
Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。
3 总结
1 首次全量同步(快照) ->增量同步(命令) 增量同步失败->全量同步(2.8后已经改善)
五 注意事项
1 slave只提供只读功能 参数为 slave-read-only yes
2 即使有多个从服务器同时发来SYNC指令,主服务器也只会执行一次BGSAVE
3 redis2.8之后有更高效的同步命令psync指令,减少由于主从断开恢复的成本(redis主会维护一个缓冲区,存储最近执行的命令)
4 清除主从同步信息:在从库执行SLAVEOF NO ONE,可以将从库同步信息清除,但是同步的数据会保留,可以用作slave下线或者slave转化为master
以上是关于redis主从集群 主挂掉 java怎样调用从的主要内容,如果未能解决你的问题,请参考以下文章