redis安装及主从复制配置

redis的安装

  1. 下载安装包,并解压
[root@server1 ~]# ls
redis-5.0.3.tar.gz
[root@server1 ~]# tar zxf redis-5.0.3.tar.gz
  1. 安装依赖包,并编译安装
[root@server1 ~]# yum install gcc -y
[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# make && make install
  1. 执行redis安装脚本
[root@server1 redis-5.0.3]# cd utils/
[root@server1 utils]# ./install_server.sh 

在这里插入图片描述

  • 此时netstat -antlp会出现6379端口
    在这里插入图片描述

主从复制介绍:

更加详细的介绍参照http://redis.cn/topics/replication.html

在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis
服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master
上,并且无论这期间 master 发生了什么, slave 都将尝试让自身成为 master 的精确副本。

这个系统的运行依靠三个主要的机制:

  • 当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave 的更新,以便于将自身数据集的改变复制给 slave 。包括客户端的写入、key 的过期或被逐出等等。

  • 当 master 和 slave 之间的连接断开之后,因为网络问题、或者是主从意识到连接超时, slave 重新连接上 master 并会尝试进行部分重同步:这意味着它会尝试只获取在断开连接期间内丢失的命令流。

  • 当无法进行部分重同步时, slave 会请求进行全量重同步。这会涉及到一个更复杂的过程,例如 master 需要创建所有数据的快照,将之发送给 slave ,之后在数据集更改时持续发送命令流到 slave 。

接下来的是一些关于 Redis 复制的非常重要的事实:

  • Redis 使用异步复制,slave 和 master 之间异步地确认处理的数据量一个 master 可以拥有多个 slave。 slave 可以接受其他 slave 的连接。除了多个 slave 可以连接到同一个 master 之外, slave 之间也可以像层叠状的结构(cascading-like structure)连接到其他 slave 。自 Redis 4.0 起,所有的 sub-slave 将会从 master 收到完全一样的复制流。

  • Redis 复制在 master 侧是非阻塞的。这意味着 master 在一个或多个 slave 进行初次同步或者是部分重同步时,可以继续处理查询请求。

  • 复制在 slave 侧大部分也是非阻塞的。当 slave 进行初次同步时,它可以使用旧数据集处理查询请求,假设你在 redis.conf 中配置了让 Redis 这样做的话。否则,你可以配置如果复制流断开, Redis slave 会返回一个 error 给客户端。但是,在初次同步之后,旧数据集必须被删除,同时加载新的数据集。 slave 在这个短暂的时间窗口内(如果数据集很大,会持续较长时间),会阻塞到来的连接请求。自 Redis 4.0 开始,可以配置 Redis 使删除旧数据集的操作在另一个不同的线程中进行,但是,加载新数据集的操作依然需要在主线程中进行并且会阻塞 slave 。

复制既可以被用在可伸缩性,以便只读查询可以有多个 slave 进行(例如 O(N) 复杂度的慢操作可以被下放到 slave ),或者仅用于数据安全。
  • 可以使用复制来避免 master 将全部数据集写入磁盘造成的开销:一种典型的技术是配置你的 master Redis.conf 以避免对磁盘进行持久化,然后连接一个 slave ,其配置为不定期保存或是启用 AOF。但是,这个设置必须小心处理,因为重新启动的 master 程序将从一个空数据集开始:如果一个 slave 试图与它同步,那么这个 slave 也会被清空。

主从复制配置

实验环境(redhat rhel7.3)
server1----->master
server2,server3------->slave

  • master配置
[root@server1 utils]# vim /etc/redis/6379.conf
 70 bind 0.0.0.0

在配置文件redis.conf中,默认的bind 接口是127.0.0.1,也就是本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接,这样可以避免将redis服务暴露于危险的网络环境中,防止一些不安全的人随随便便通过远程连接到redis服务。如果将bind选项注释的话,那会接受所有来自于可用网络接口的连接。

  • slave配置
[root@server2 utils]# vim /etc/redis/6379.conf 
 70 bind 0.0.0.0
 282 slaveof 172.25.254.1 6379
 [root@server3 utils]# vim /etc/redis/6379.conf 
 70 bind 0.0.0.0
 282 slaveof 172.25.254.1 6379
  • 配置完成后重启3个主机的服务
[root@server1 utils]# systemctl restart redis_6379.service 
[root@server2 utils]# systemctl restart redis_6379.service 
[root@server3 utils]# systemctl restart redis_6379.service
  • 测试
    在master上插入key-value,在slave上查看
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43273168/article/details/90179395