Redis主从配置

- 主从模式概述

Redis数据库与传统数据库属于并行关系,也就是说传统的关系型数据库保存的是结构化数据,而Redis保存的是一些所谓的“临时”数据,因为Redis具备一项很强的功能,“持久化数据”,发现Redis好像也可以做一些传统数据库的开发。但是现在Redis除了可以进行数据的存储之外,实际上也可以在一些系统的架构设计中作为作为数据的缓冲点:

1.数据缓存
2.Nginx做集群的时候,Redis可以进行关键信息的存储(比如Session)
3.高并发访问的情况,Redis做购物车

redis 数据库 镜像_redis

在单节点的设计上,如果一旦Redis服务器down掉(或重启),影响最大的是购物车,这样会清空数据
因为数据缓存没有了,可以重新继续存入,session没有了,可以让用户再次登陆之后完成操作

实际运行中,单节点的Redis服务器会因为各种原因不稳定:
1.断电
2.机房网络故障
3.服务器崩溃,数据丢失(最严重,不可恢复)

那么一旦出现了问题之后必须保证所有的数据可以进行快速恢复处理,所以这个时候数据备份就成为一个核心主题,对于备份实际上有两种做法:
1)离线备份:等到夜深人静,月黑风高时,自己一个人在机房默默地拿着硬盘开始拷贝;(要求数据存完,服务器关闭)
2)在线备份:当数据做出任何处理操作的时候都进行及时的备份。所以这样的设计在Redis里面称为:主从设计

结构图:
一主二仆(标准的),当然一主一仆也可以

redis 数据库 镜像_redis_02

当主服务器出现了数据,从服务器自动做同步,客户直接访问的是主服务器,而从服务器主要做数据备份。

还有一种关系:主-从-从 ,但很少被采用

redis 数据库 镜像_redis_03

- 主从模式实现

如果要想实现主从模式的配置,首先一定要准备出三台Redis实例,本次为了方便将在一台主机上进行模拟,也就是说在这一台主机上将准备出三个Redis实例,分别对应的端口为6379,6380,6381,其中6379运行的Redis服务为主服务,而其他两个端口运行的服务为从服务。
1.如果要想进行主从的模式匹配,主服务器上不需要做出任何的变化,也就是说主服务器根本就不关心是否有从服务器
2.所有的从服务器的配置文件(redis-6380.conf、redis-6381.conf)必须要求明确的设置出它对应的主服务器
1)编辑redis.6380.conf配置文件(另一个同理)
2)搜索/slaveof关键字

redis 数据库 镜像_服务器_04

redis 数据库 镜像_redis_05


配置主服务器的Ip地址和端口:

slaveof 192.168.231.128 6379

添加 slaveof 192.168.231.128 即可

设置主服务器的密码

masterauth wanghaoxin

随后redis-6381.conf配置文件采用与之一样的方式完成处理;

3.启动所有的Redis数据服务

/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6379.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6380.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf

4.登陆6379端口的Redis服务(主服务) 查看所有的副本信息
/usr/local/redis/bin/redis-cli -h 192.168.231.128 -p 6379 -a wanghaoxin info replication
登陆的同时执行命令info replication
也可以先登录之后单独执行info replication
这种做法也是redis中比较常见的做法

redis 数据库 镜像_redis_06

如果可以看见这样的信息就表示6379下有两个从节点

5.操作主节点(6379)的数据:

set mldn java
随后退出此客户端,随意登陆6380或6381端口的主机
可以查看到在主服务器上设置的数据
这个时候一定是通过主节点进行数据的设置,而后自动同步到所有的从节点上 ,这样的好处是可以进行数据的备份处理

如果直接在从节点上进行数据的设置操作,则会出现如下错误:
error READONLY You can’t write against a read only slave

主从模式设计的最大好处在于:可以自动对数据做备份
主从模式设计的最大缺点:只能够做备份,而出现灾难之后(主服务器down机)无法立即恢复(无法把从节点拿来直接作为主服务器为用户提供使用)

redis 数据库 镜像_服务器_07

主从只是集群搭建的第一小步