Redis的master/slave简单实现
2016-11-02 09:14
351 查看
在做此时之前肯定需要先下载Redis。下载地址:https://github.com/MSOpenTech/redis/releases。下载的是最新版本3.2.1,下载完之后解压。
下面具体说一下具体步骤:
1、将解压之后的Redis放到C盘,因为是要设置主从关系所以该目录下放了两个,分别是Redis和redis2。
2、打开redis2目录下的redis.windows.conf修改里面的port为6380,Redis配置文件默认的端口是6379,部署在同一台机的两个redis的端口不能一样。同时找到# slaveof <masterip> <masterport>,直接在下面加上主服的IP和端口。例如:slaveof 127.0.0.1 6379。因为是在本地所以不再需要关心bind 127.0.0.1这个参数,使用默认的就好。
3、通过命令开启Redis服务。cd c:\Redis——>redis-server.exe redis.windows.conf开启主服。cd c:\redis2——>redis-server.exe redis.windows.conf开启从服。这时候会看到下图红色框内的内容,说明设置成功了。
接下来测试一下。重新打开命令窗口:cd c:\Redis——>redis-cli.exe -h 127.0.0.1 -p 6379开启主服命令窗口,cd c:\redis2——>redis-cli.exe -h 127.0.0.1 -p 6380开启从服命令窗口。在主服命令窗口输入:set masterKey masterValue。在从服命令窗口用keys * 命令可以看到刚才主服设置的masterKey。多说一句,在从服只能对masterKey进行只读操作,更多玩法自己去尝试吧。
加一段代码作为测试
public class JedisUtil {
private static class JedisUtilHolder{
private static final Jedis jedis = new Jedis("localhost", 6379);
private static final Jedis jedis_slave = new Jedis("localhost", 6380);
}
private JedisUtil(){}
public static final Jedis getInstance() {
return JedisUtilHolder.jedis;
}
public static final Jedis getSlaveInstance(){
return JedisUtilHolder.jedis_slave;
}
}
public class RedidTest{
private static Jedis instanceJedis(){
return JedisUtil.getInstance();
}
private static Jedis instanceSlaveJedis(){
return JedisUtil.getSlaveInstance();
}
public static void main(String[] args) {
Jedis jedis = instanceJedis();//master
Jedis jedis_slave = instanceSlaveJedis();//slave
Master_Slave(jedis, jedis_slave);
}
private static void Master_Slave(Jedis master, Jedis slave){
String key = "a";
String a = master.get(key);
if(StringUtils.isNotBlank(a)){
master.del(key);
}
master.set(key, "Hi");
master.close();
slave.slaveof("127.0.0.1", 6379);//指定master
System.out.println(slave.get(key));
slave.slaveofNoOne();//master如果down挂,可以用代码将slave提升为master(即:可写)
slave.set(key, "newHi");
System.out.println("new Key:"+slave.get(key));
slave.close();
}
}
下面具体说一下具体步骤:
1、将解压之后的Redis放到C盘,因为是要设置主从关系所以该目录下放了两个,分别是Redis和redis2。
2、打开redis2目录下的redis.windows.conf修改里面的port为6380,Redis配置文件默认的端口是6379,部署在同一台机的两个redis的端口不能一样。同时找到# slaveof <masterip> <masterport>,直接在下面加上主服的IP和端口。例如:slaveof 127.0.0.1 6379。因为是在本地所以不再需要关心bind 127.0.0.1这个参数,使用默认的就好。
3、通过命令开启Redis服务。cd c:\Redis——>redis-server.exe redis.windows.conf开启主服。cd c:\redis2——>redis-server.exe redis.windows.conf开启从服。这时候会看到下图红色框内的内容,说明设置成功了。
接下来测试一下。重新打开命令窗口:cd c:\Redis——>redis-cli.exe -h 127.0.0.1 -p 6379开启主服命令窗口,cd c:\redis2——>redis-cli.exe -h 127.0.0.1 -p 6380开启从服命令窗口。在主服命令窗口输入:set masterKey masterValue。在从服命令窗口用keys * 命令可以看到刚才主服设置的masterKey。多说一句,在从服只能对masterKey进行只读操作,更多玩法自己去尝试吧。
加一段代码作为测试
public class JedisUtil {
private static class JedisUtilHolder{
private static final Jedis jedis = new Jedis("localhost", 6379);
private static final Jedis jedis_slave = new Jedis("localhost", 6380);
}
private JedisUtil(){}
public static final Jedis getInstance() {
return JedisUtilHolder.jedis;
}
public static final Jedis getSlaveInstance(){
return JedisUtilHolder.jedis_slave;
}
}
public class RedidTest{
private static Jedis instanceJedis(){
return JedisUtil.getInstance();
}
private static Jedis instanceSlaveJedis(){
return JedisUtil.getSlaveInstance();
}
public static void main(String[] args) {
Jedis jedis = instanceJedis();//master
Jedis jedis_slave = instanceSlaveJedis();//slave
Master_Slave(jedis, jedis_slave);
}
private static void Master_Slave(Jedis master, Jedis slave){
String key = "a";
String a = master.get(key);
if(StringUtils.isNotBlank(a)){
master.del(key);
}
master.set(key, "Hi");
master.close();
slave.slaveof("127.0.0.1", 6379);//指定master
System.out.println(slave.get(key));
slave.slaveofNoOne();//master如果down挂,可以用代码将slave提升为master(即:可写)
slave.set(key, "newHi");
System.out.println("new Key:"+slave.get(key));
slave.close();
}
}
相关文章推荐
- 【Redis】Redis学习(二) master/slave、sentinel、Cluster简单总结
- 11、Spring技术栈-整合Redis,通过Redis的Master-Slave实现缓存数据读写分离
- 简单方式实现redis的master-master复制
- 面试题(redis master和slave是怎么实现数据同步的)
- Redis实现主从复制(master-slave)
- Redis实现主从复制(Master&Slave)
- 使用Redis的脚本功能实现Redis中数据简单查询
- Redis学习手册(主从复制) Master-Slave
- python实现简单的redis 队列 SIMPLE PYTHON QUEUE WITH REDIS
- 在多台服务器上简单实现Redis的数据主从复制
- springdata redis实现的简单demo
- 使用 ReplicationConnection 连接 Master/Slave 实现负载均衡
- 使用 ReplicationConnection 连接 Master/Slave 实现负载均衡
- (精典教程)在MySql上实现Replication(Master 与 Slave 数据同步)
- Redis源码学习-Master&Slave的命令交互
- Redis源码学习-Master&Slave的命令交互
- 在多台服务器上简单实现Redis的数据主从复制
- 简单redis队列实现
- redis master slave recepation
- Yii 快速学习教程------master-slave的实现(四)