Redis 主从安装-Centos

由于机器有限,所以接下来的教程都是在一台虚拟机中进行部署安装.

Redis主从工作原理

如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。master收到PSYNC命令后,会在后台进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。当持久化进行完毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然后再加载到内存中。然后,master再将之前缓存在内存中的命令发送给slave。

当master与slave之间的连接由于某些原因而断开时,slave能够自动重连Master,如果master收到了多个slave并发连接请求,它只会进行一次持久化,而不是一个连接一次,然后再把这一份持久化的数据发送给多个并发连接的slave。

主从复制(全量复制)流程图:

数据部分复制

当master和slave断开重连后,一般都会对整份数据进行复制。但从redis2.8版本开始,redis改用可以支持部分数据复制的命令PSYNC去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master继续进行未完成的复制,从所记录的数据下标开始。如果master进程id变化了,或者从节点数据下标offset太旧,已经不在master的缓存队列里了,那么将会进行一次全量数据的复制。

主从复制(部分复制,断点续传)流程图:

如果有很多从节点,为了缓解主从复制风暴(多个从节点同时复制主节点导致主节点压力过大),可以做如下架构,让部分从节点与从节点(与主节点同步)同步数据

下载安装Redis

$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar -xzvf redis-5.0.4.tar.gz -C /usr/local
$ cd redis-5.0.4
# 官网示例是使用 `make`,它会将其安装到当前目录的src目录下。
# 将`make`替换成`make install PREFIX=/usr/local/redis`,将其安装到指定目录,记得将配置文件进行拷贝过去
$ make install PREFIX=/usr/local/redis

上面我们将redis安装到了/usr/local/redis,所以,可以使用/usr/local/redis/bin/redis-server.sh 启动服务。

配置主从

创建master 端口号6379

  1. 创建目录和配置文件
$ mkdir -p /usr/local/master-slave/6379
$ vim /usr/local/master-slave/6379/redis.conf
  1. 编辑redis.conf内容如下
port 6379
requirepass soft01
masterauth soft01
daemonize yes
databases 16
protected-mode no
pidfile /usr/local/master-slave/6379/redis.pid
timeout 300# rdb aof
save 900 1
save 300 10
save 60 10000
dir /usr/local/master-slave/6379
dbfilename dump.rdb
appendonly yes
appendfilename appendonly.aof
appendfsync everysec
auto-AOF-rewrite-percentage 100
auto-AOF-rewrite-min-size 64mb
aof-use-rdb-preamble yes

创建slave 端口号6380

  1. 创建目录和配置文件
$ mkdir -p /usr/local/master-slave/6380
$ vim /usr/local/master-slave/6380/redis.conf
  1. 编辑redis.conf内容如下
port 6380
requirepass soft01
masterauth soft01
daemonize yes
databases 16
protected-mode no
pidfile /usr/local/master-slave/6380/redis.pid
timeout 300# rdb aof
save 900 1
save 300 10
save 60 10000
dir /usr/local/master-slave/6380
dbfilename dump.rdb
appendonly yes
appendfilename appendonly.aof
appendfsync everysec
auto-AOF-rewrite-percentage 100
auto-AOF-rewrite-min-size 64mb
aof-use-rdb-preamble yes# 主从配置
replicaof 192.168.0.138 6379

创建slave 端口号6381

  1. 创建目录和配置文件
$ mkdir -p /usr/local/master-slave/6381
$ vim /usr/local/master-slave/6381/redis.conf
  1. 编辑redis.conf内容如下
port 6381
requirepass soft01
masterauth soft01
daemonize yes
databases 16
protected-mode no
pidfile /usr/local/master-slave/6381/redis.pid
timeout 300# rdb aof
save 900 1
save 300 10
save 60 10000
dir /usr/local/master-slave/6381
dbfilename dump.rdb
appendonly yes
appendfilename appendonly.aof
appendfsync everysec
auto-AOF-rewrite-percentage 100
auto-AOF-rewrite-min-size 64mb
aof-use-rdb-preamble yes# 主从配置
replicaof 192.168.0.138 6379

启动服务

# 启动主服务
$ /usr/local/redis/bin/redis-server /usr/local/master-slave/6379/redis.conf# 启动从服务
$ /usr/local/redis/bin/redis-server /usr/local/master-slave/6380/redis.conf
$ /usr/local/redis/bin/redis-server /usr/local/master-slave/6381/redis.conf$ ps -ef | grep redis
root      66910      1  0 00:07 ?        00:00:00 /usr/local/redis/bin/redis-server *:6381
root      30195      1  0 23:56 ?        00:00:00 /usr/local/redis/bin/redis-server *:6380
root     112072      1  0 23:23 ?        00:00:03 /usr/local/redis/bin/redis-server *:6379

测试

打开三个终端,分别连接主服务和从服务
连接主服务:

$ /usr/local/redis/bin/redis-cli -p 6379 -a soft01

连接从服务:

$ /usr/local/redis/bin/redis-cli -p 6380 -a soft01
$ /usr/local/redis/bin/redis-cli -p 6381 -a soft01

在主服务器上设置key:

127.0.0.1:6379> set name cfl
ok

在从服务器上获取key:

127.0.0.1:6380> get name
"cfl"
127.0.0.1:6381> get name
"cfl"

在从服务器上进行设置key,会出现错误:(error) READONLY You can’t write against a read only replica.

查看

127.0.0.1:6379>info
...
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=2305,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=2305,lag=0
master_replid:4c14592216e9a8492445fee9090c025be7b229f8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2305
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2305
...

总结

Redis的主从架构,当主服务出现异常后,客户端的写请求将会失败,而读请求正常(从服务只提供了读数据权限)。并且主从架构中,从服务不会自动选举成主服务,需要人为操作才能恢复。

配置从服务器的配置文件时(redis.conf)主服务的地址需要配置真实的ip地址。在开始的时候,我配置的是127.0.0.1 在服务器上测试时没有发现问题,但是在其它机器测试时,就会连接127.0.0.1的redis服务就会出现错误(我理解的是客户端拿到服务端的返回的redis节点信息是127.0.0.1,客户端在建立连接时就使用127.0.0.1导致异常)!

不管是主节点还是从节点在配置配置文件时,都要配置masterauth属性!

在网上没有找到Spring Boot 连接Redis主从的性格资料。

Redis 主从安装-Centos相关推荐

  1. php redis 主从配置,Redis主从及其PHP扩展安装配置

    1.Redis简介Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序 ...

  2. redis安装+redis主从

    1.安装主redis 1.1.搭建安装环境 #yum install -y tcl 1.2.编译安装redis #tar -zvxf redis-2.6.7.tar.gz #cd redis-2.6. ...

  3. CentOS下Redis的安装

    CentOS下Redis的安装 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么redis版本就不能低于3.2版本,由于这个特性是3 ...

  4. linux下部署redis主从,Linux下安装Redis及Redis主从同步配置

    一 ,Linux安装Redis 1.我们先配置redis的 yum 源 , 很多软件的找不到 yum 源 我们可以使用 EPEL 找到很多软件的yum源 2.使用命令 yum install epel ...

  5. Linux下redis的安装(适用centos)

    转自:https://www.cnblogs.com/_popc/p/3684835.html 第一部分:安装redis  希望将redis安装到此目录 1 /usr/local/redis 希望将安 ...

  6. Redis主从配置及通过Keepalived实现Redis自动切换高可用

    Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区  作者:fuquanjun [字体:大 中 小] 一:环境介绍: Mas ...

  7. 【Redis学习】Redis的安装、管理、适用场合以及使用

    1.Redis概述 我们知道,内存是电脑主板上的存储部件,用于存储当前正在使用的数据和程序,CPU可以与内存直接沟通,所以访问速速非常高:而外存数据必须加载到内存以后程序才能使用.如果把CPU当做一个 ...

  8. centos中配置java视频教程_安装CentOs

    Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  9. [redis]知识回顾之redis主从+哨兵搭建简要记录

    1.先准备环境 家里的万年老爷机(120G的SSD,300G硬盘 ),手机热点下载,所以只能少利用空间资源,用virtualBox装centos7纯净版 其中要点: 1.virtualbox创建新机要 ...

最新文章

  1. 【web前端】可筛选[输入搜索]的select(重写)
  2. REVERSE-PRACTICE-JarvisOJ-1
  3. 不固定个数的子元素自适应居中
  4. 二十一、日期Date类型
  5. android 绕过动态权限,android绕过permission验证及fork进程权限提升
  6. Win7下如何破解Visual Studio2008 90天试用版
  7. 交友盲盒小程序版本 全开源版本
  8. virtualbox虚拟机下的cdlinux找不到无线网卡的解决方法
  9. 项目管理十大知识领域之项目范围管理
  10. Android 分享到LINE
  11. 何为Servlet?
  12. combo 口切换配置
  13. 「地埋式积水监测站」智慧防汛,科技先行
  14. android宿舍管理系统源码,基于android的学生宿舍管理系统的实现.doc
  15. 自动化测试生命周期的六个阶段
  16. php printer_open 用法_php控制标签打印机(斑马)
  17. html5 oa首页免费,免费的在线oa
  18. 使用andorid studio获取经纬度信息
  19. Python[统计案例分析/课程内容+补充]
  20. Vim_设置Esc快捷键及补全功能:

热门文章

  1. 20道常考Python面试题大总结
  2. cesium基础数据文件制作之三维矢量建筑数据
  3. 【PHP项目部署四】Apache、PHP、Mysql整合
  4. kali,安装Fluxion遇到了Aborted, X (graphical) session unavailable
  5. IT族室内锻炼身体的小妙招
  6. 名词解释第二十六讲:热钱包
  7. 总结MySQL模糊查询
  8. XGD算法设计上机考试(补充)
  9. 电压转电流电路设计(TI参考设计)
  10. Python编程 从入门到实践——第1章 起步