您的位置:首页 > 数据库 > Redis

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis