Redis配置主从

准备

  • 之前本地搭建的虚拟环境将其复制一份,重置MAC地址等。总之就是本地搭建了两台服务器,一台ip:192.168.25.98(定义为98A) 另一台ip:192.168.25.87(定义为87B)

一、对98A进行操作

  1. 将98A的redis配置修改(98A假设启用两个redis)
# 将redis的数据库放在这个位置
dir /var/data/redis_6379
# 将redis的数据库放在这个位置
dir /var/data/redis_6390
pidfile /var/run/redis_6390.pid
port 6390
  1. 修改98A的启动项
# 真实的为 vim /etc/rc.d/rc.local
vim /etc/rc.local
# 加入
/usr/local/redis/src/redis-server /etc/redis.conf

/usr/local/redis/src/redis-server /etc/redis_6390.conf


3. 检查/var目录是否有redis配置中的目录(没有就mkdir)

mkdir -p  /var/data/redis_6379
mkdir -p  /var/data/redis_6390

4.重启服务器(不想重启就手动开启redis)

#先看有没有启动进程如果有就杀死进程
ps aux | grep redis
kill -9 [进程id]
# 手动开启(同rc.local中加入的两行)
/usr/local/redis/src/redis-server /etc/redis.conf
/usr/local/redis/src/redis-server /etc/redis_6390.conf


5. 检查进程

ps aux | grep redis


6. 使用php测试98A(新建两个文件)

<?php
// 新建98A6379.php
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->set('key6379', '这是98A6379端口的');
echo $redis->get('key6379');
var_dump($redis->keys('*'));
<?php
// 新建98A6390.php
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6390);
$redis->set('key6390', '这是98A6390端口的');
echo $redis->get('key6390');
var_dump($redis->keys('*'));

结果:

都只有一个key,/va/data目录也生成了各自的文件,说明成功

二、对87B进行操作

  1. 新建87B6379.php并写入
<?php

$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->set('key6379_87B', '这是87B6379端口的');
echo $redis->get('key6379_87B');
var_dump($redis->keys('*'));


2.开始配置87B默认6379端口的配置

vim /etc/redis.conf
# 找到slaveof 并加入98A的其中一个ip和端口
slaveof 192.168.25.98 6379


保存退出
3. 找到87B的redis进程并杀死,再重启redis

ps aux | grep redis
kill -9 1766
/usr/local/redis/src/redis-server /etc/redis.conf 


4. 修改87B6379.php

<?php

$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
// $redis->set('key6379_87B', '这是87B6379端口的');
// echo $redis->get('key6379_87B');
var_dump($redis->keys('*'));

结果失败了

想了想失败的原因,最后确定是ip的问题(即主机帮定的ip的问题)

因此将主Redis(98A)配置(redis.conf和redis_6390.conf)中的都改成各自的真实ip

# 绑定外网ip和回环ip(一个是可以让外部访问一个可以让本地访问)
bind 192.168.25.98 127.0.0.1

成功

最后

其实Redis配置主从比较简单,但是以上只是最简单的配置,在真实的环境中我们还应在主Redis上加上ip限制密码等以确保数据准确性