文章目录
目前,主从复制 读写分离已经成为一种常用的策略。使用两台虚拟机进行主从复制的文章已经很多,我今天使用Linux虚拟机+Windows实现Redis的主从复制。
实现结果:
- 主机: VMware CentOS6.3
Redis版本:2.8.9 设置端口6380 - 从机: Windows 10
Redis版本:3.2.100默认端口6379
1.主机(CentOS6.3)Redis安装
1.安装gcc(C程序的编译工具)
- 设置桥接方式连网
设置DNS[否则会有Couldn’t resolve host 'mirrors.aliyun.com’问题]
cd /etc/sysconfig/network-scripts
gedit ifcfg-eth0
- 配置如下:
DEVICE="eth0"
BOOTPROTO=static
HWADDR="00:0C:29:A3:ED:5A"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=172.18.214.20
GATEWAY=172.18.0.1
NETMASK=255.255.0.0
DNS1=8.8.8.8
DNS2=8.8.4.4
yum install gcc-c++
- 查看版本
gcc -v
gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
2.安装redis
1.安装tcl支持
yum install tcl
2.安装redis我们以2.8.9为例
[注意:不要安装太新的版本!如果你用的CentOS也是6.3版本,安装太新的Redis需要个更高版本的gcc,gcc手动安装比较麻烦]
wget http://download.redis.io/releases/redis-2.8.9.tar.gz
tar xzf redis-2.8.9.tar.gz
cd redis-2.8.9
make
make test
make install
3.备份出厂默认设置
新建/myredis
cp redis.conf /myredis/
======>修改备份的
gedit /myredis/redis.conf
daemonize yes
3.启动
redis-server /myredis/redis.conf
redis-cli -p 6379 启动
127.0.0.1:6379> ping
PONG
成功
- 关闭
redis-cli shutdown
4.修改端口号
gedit /myredis/redis.conf
port 6380
重新启动
redis-server /myredis/redis.conf
redis-cli -p 6380
关闭
redis-cli shutdown
2.从机(Windows)Redis安装及配置
1.下载地址
https://pan.baidu.com/s/1z1_OdNVbtgyEjiktqgB83g
2.不使用服务启动(不推荐)
cd/d E:\java_exercise\javaUtils\Redis-x64-3.2.100
redis-server redis.windows.conf
启动成功
3.设置服务命令,启动
redis-server --service-install redis.windows-service.conf --loglevel verbose
- 在WIN+R services. msc 服务中看到redis 。开启服务:
redis-server --service-start
[15120] 06 May 13:26:07.715 # Redis service successfully started.
- 查看进程:
tasklist|findstr "redis"
- 启动:
redis-cli -p 6379
- 关闭:
redis-cli shutdown
3.使用NAT方式连网
- 首先要让虚拟机和Windows同时连上网,这里强烈推荐VMware虚拟机Centos6.3三种方式(NAT方式、host-only方式、桥接方式)连网(详细教程),这是我对虚拟机三种上网方式的详细介绍。 这里请使用NAT方式连网,确保主从机可以ping通www.baidu.com,而且确保能互相ping通。
4.CentOS+Windows主从复制
1.修改配置文件
- 主机:添加
gedit /myredis/redis.conf
bind 169.254.0.129
- 以后启动要
redis-cli -h 169.254.0.129 -p 6380
- 从机修改带service那个配置文件(根据ipconfig)
bind 169.254.0.1 127.0.0.1
2.开启服务
- 从机:
redis-server --service-start
- 主机:
redis-server /myredis/redis.conf
3.idea
package indi.huishi.redis;
import redis.clients.jedis.Jedis;
/**
* @Author: Huishi
* @Date: 2021/5/6 17:19
*/
public class MasterSlaveTest {
public static void main(String[] args) {
// 主机Centos
Jedis jedis_mas = new Jedis("169.254.0.129", 6380);
System.out.println(jedis_mas.ping());
// 从机
Jedis jedis_slv = new Jedis("169.254.0.1", 6379);
System.out.println(jedis_slv.ping());
// 配从不配主
// jedis_slv.slaveofNoOne();
// jedis_mas.slaveofNoOne();
String s = jedis_slv.slaveof("169.254.0.129", 6380);
System.out.println(s);
// System.out.println("从机"+jedis_slv.info());
// System.out.println("主机"+jedis_mas.info());
// 主机写
jedis_mas.set("money","1000L");
// 从机读
String money = jedis_slv.get("money");
System.out.println(money);
}
}