redis配置最简单的主从复制集群

文章目录

        • redis的主从复制
        • redis主从复制的配置
        • 启动redis主从实例
        • 测试redis主从是否配置成功

redis的主从复制

主节点数据更新后根据配置和策略,自动同步到从节点,Master以写为主,Slave以读为主。

redis主从复制的作用:

  1. 读写分离,使数据库能支撑更大的并发。
  2. 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库
    继续工作,避免数据丢失。
  3. 当 I/O 访问频率过高,单机无法满足,此时做多库的存储,降低磁盘 I/O 访问
    的频率,提高单个机器的 I/O 性能。

redis主从复制的配置

本章节配置的redis主从复制,只是在一台机器上两个不同端口上配置master和slave,实现一个最简单的redis主从复制架构。

安装redis

redis下载地址:https://redis.io/download,这里我下载的是redis-5.0.4(只有redis3.0以上的版本才能搭建redis集群)。

下载之后解压

sudo tar -xzf redis-5.0.4.tar.gz -C /usr/local
cd redis-5.0.4
sudo make

在make命令编译时候报出一个bug:error:jemalloc/jemalloc.h:No such file or directory。

原因:Redis 2.4版本之后,默认使用jemalloc来做内存管理,因为jemalloc被证明解决fragmentation problems(内存碎片化问题)比libc更好。报出这个错误原因是没有jemalloc而只有libc。

解决办法:指定libc做redis的内存管理,在make命令上指定参数。

sudo make MALLOC=libc 

make完后 redis-5.0.4/src目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序都位于安装目录 src 目录下。

复制redis.conf

redis安装完毕后可以把原来自带的redis.conf改名为redis1.conf,用来做Master-redis启动时指定的配置文件;从redis1.conf复制出一份redis2.conf的配置文件,用来做Slave-redis启动时指定的配置文件。

cd /usr/local/redis-5.0.4
mv redis.conf redis1.conf
cp redis1.conf redis2.conf

配置redis.conf

修改配置文件

vi redis1.conf

修改如下配置项

#后端模式运行
daemonize yes  

#指定pid文件,把pidfile生成到有权限的目录下
pidfile /usr/local/redis-5.0.4/redis1.pid 

修改配置文件

vi redis2.conf

修改如下配置项,并加入slaveof 127.0.0.1 6379

port 6380

#后端模式运行
daemonize yes  

#指定pid文件,把pidfile生成到有权限的目录下
pidfile /usr/local/redis-5.0.4/redis_6380.pid

#指定redis集群的主节点
slaveof 127.0.0.1 6379

启动redis主从实例

启动两个redis实例客户端,启动时指定配置文件(一个主节点,一个从节点)

cd /usr/local/redis-5.0.4/src
./redis-server ../redis1.conf
./redis-server ../redis2.conf

启动redis客户端,连接主节点

./redis-cli -h 127.0.0.1 -p 6379

输入info指令

info

在Replication显示项可以看出,连接的此redis实例role(角色)为master,有一个Slave(从节点)与之连接,Slave的ip和端口为127.0.0.1和6380。

redis配置最简单的主从复制集群_第1张图片

测试redis主从是否配置成功

连接master(127.0.0.1:6379的redis实例)

./redis-cli -h 127.0.0.1 -p 6379

在master中设置键值,并取值

set name "atuo"
get name

在这里插入图片描述

连接slave(127.0.0.1:6380的redis实例)

./redis-cli -h 127.0.0.1 -p 6380

在slave上取出在master上设置的键的值(取值成功)

get name

在这里插入图片描述

我们发现master和slave已经实现了数据的同步

而此时我们若想在slave上设置键值,是会报错的,可见redis的主从复制实现了读写分离

set age 3

在这里插入图片描述

在这里我们只是在一台机器上演示了一下配置redis主从复制的一个最简单的模型,而在真正的应用开发中,redis的主从复制配置肯定是分开在不同的机器上的。

你可能感兴趣的:(数据库)