redis持久化

理论

1、 RDB持久化(默认支持,无需配置)

该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。

2、 AOF持久化

该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

3、 无持久化

我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了。

4、 redis同时使用RDB和AOF

7.1.1 RDB

7.1.1.1 优势

1、 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。

2、 对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上

3、 性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。

4、 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

7.1.1.2 劣势

1、 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

2、 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟

7.1.1.3 配置说明Snapshotting

l save 900 1 #每900秒(15分钟)至少有1个key发生变化,则dump内存快照。

l save 300 10 #每300秒(5分钟)至少有10个key发生变化,则dump内存快照

l save 60 10000 #每60秒(1分钟)至少有10000个key发生变化,则dump内存快照

7.1.2 AOF

7.1.2.1 优势

1、 该机制可以带来更高的数据安全性,即数据持久性。Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步。事实上,每秒同步也是异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失。而每修改同步,我们可以将其视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。可以预见,这种方式在效率上是最低的。至于无同步,无需多言,我想大家都能正确的理解它。

2、 由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。

3、 如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。

4、 AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建

222配置AOF

@怎么开启

appendonly yes:开启AOF

@什么方式

# appendfsync always

appendfsync everysec

# appendfsync no

l always    #每次有数据修改发生时都会写入AOF文件

l everysec  #每秒钟同步一次,该策略为AOF的缺省策略

l no       #从不同步。高效但是数据不会被持久化

从 Redis 2.4 开始,AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。但网上有网友说已经3.2.5版本了,貌似redis还是没有自动触发BGREWRITEAOF

数据恢复演示

1、 flushall操作  清空数据库

2、 及时关闭redis服务器(防止dump.rdb)。  shutdown nosave  ///在 redis-celi 关闭redis 服务

3、 编辑aof文件(vim),将日志中的flushall命令删除并重启服务即可

redis-check-aof 检查工具

redis-check-aof /usr/local/var/db/redis/appendonly.aof

AOF analyzed: size=79, ok_up_to=79, diff=0

AOF is valid

重写AOF:若不满足重写条件时,可以手动重写,命令:bgrewriteaof

执行一个 AOF文件重写操作,重写会创建一个当前 AOF 文件的体积优化版本。

即使 BGREWRITEAOF 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 BGREWRITEAOF 成功之前不会被修改。

从 Redis 2.4 开始,AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。但网上有网友说已经3.2.5版本了,貌似redis还是没有自动触发BGREWRITEAOF

稳妥的方法还写一个脚本每天定时去执行

1  BGSAVE(保存dump.rdb)手动让 Redis 进行数据集保存操作

自动保存一次数据集。你也可以通过调用 SAVE 或者 BGSAVE , 手动让 Redis 进行数据集保存操作

2BGREWRITEAOF(重写AOF文件

在版本号大于等于 2.4 的 Redis 中, BGSAVE(保存dump.rdb) 执行的过程中, 不可以执行 BGREWRITEAOF(重写AOF文件) 。 反过来说, 在 BGREWRITEAOF 执行的过程中, 也不可以执行 BGSAVE 。

怎么把一个dump.rdb文件生成一个AOF文件

1  BGSAVE(保存dump.rdb)手动让 Redis 进行数据集保存操作

自动保存一次数据集。你也可以通过调用 SAVE 或者 BGSAVE , 手动让 Redis 进行数据集保存操作

2BGREWRITEAOF(重写AOF文件

在版本号大于等于 2.4 的 Redis 中, BGSAVE(保存dump.rdb) 执行的过程中, 不可以执行 BGREWRITEAOF(重写AOF文件) 。 反过来说, 在 BGREWRITEAOF 执行的过程中, 也不可以执行 BGSAVE 。

主从复制

主从复制的配置

# slaveof <masterip ip 地址> <masterport端口>//将当前server做为slave,并为其指定master信息.

安全

# requirepass foobared

任何客户端或者slave与此server交互前,需要提交密码,其他server的masterauth配置和此参数值保持一致

密码应该足够复杂(64字节)

怎么填写密码  auth gu

288 # masterauth <master-password>

“requirepass”配置项指定了当前server的密码。

此配置项中<master-password>值需要和master机器的”requirepass”保持一致

301 slave-serve-stale-data yes

如果当前server是slave,那么当slave与master失去通讯时,是否继续为客户端提供服务,”yes”表示继续,”no”表示终止.

  • 在”yes”情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期.
  • 在”no”情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知”error”

主从复制

1、 复制一份redis.conf文件并修改名称,如:cp redis.conf redis6380.conf

2、 修改redis6380.conf文件中的

l 端口号

l 进程id号(pidfile /var/run/redis6380.pid)

l slaveof:主从复制信息

l 存放aof、rdb文件的目录。

转载于:https://www.cnblogs.com/keiweila/p/7879049.html

redis6持久化主从复制相关推荐

  1. redis命令,SpringBoot整合Redis6,主从复制,哨兵模式,集群,springCache初高级应用。

    目录 1. Docker安装Redis 2. Redis的基础 2.1 redis的key命令 2.2 reids的数据结构(6.0新增的数据结构) 1. String(字符串)类型 2. List( ...

  2. redis 持久化 + 主从复制+ 集群

    2019独角兽企业重金招聘Python工程师标准>>> 一. Linux 下的 Redis 安装 && 启动 && 关闭 && 卸载 ...

  3. 2.redis高可用-持久化-主从复制-哨兵-cluster集群概述与部署,内容依旧多看完直接通透!

    文章目录 一,Redis 高可用 1.持久化 2.主从复制 3.哨兵 4.集群(cluster) 二,Redis 持久化方式 1.持久化的功能 2.持久化的方式 三, RDB 持久化 1.触发条件 2 ...

  4. redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式

    Redis高可用定义 在web服务器中,高可用代表服务器可以正常访问的时间,一般使用百分比来衡量多长时间内可以提供正常服务 但是在redis中,高可用的定义还要更广泛一点,除了提供正常的服务(如主从分 ...

  5. 全新Redis6全部知识点,零基础入门

    文章目录 1.分布式缓存Redis6安装 1.1.缓存和队列简介 1.2.本地缓存和分布式缓存介绍 1.3.Nosql和Redis简介 1.4.Linux源码安装Redis6 1.5.Docker容器 ...

  6. Redis6课程大纲

    Redis6课程大纲 1.NoSQL数据库简介 1.1.NoSQL的好处? 1.2.NoSQL数据库的概述 1.3.NoSQL适用场景 1.4.NoSQL不适用场景 1.5.常见的NoSQL数据库 1 ...

  7. Redis6入门到实战------思维导图+章节目录

    Redis学习大纲 思维导图 思维导图 Redis6入门到实战------1.NoSQL数据库简介 地址: Redis6入门到实战------2.Redis6概述和安装 地址: Redis6入门到实战 ...

  8. 不知道这些,简历上千万不要说你会 Redis 持久化。。。

    来源:http://kaito-kidd.com/ 从这篇文章开始,我们来介绍Redis高可用相关的机制.Redis要想实现高可用,主要有以下方面来保证: 数据持久化 主从复制 自动故障恢复 集群化 ...

  9. quartz持久化是指_面试必问:Redis 持久化是如何做的?RDB 和 AOF 对比分析

    从这篇文章开始,我们来介绍Redis高可用相关的机制.Redis要想实现高可用,主要有以下方面来保证: 数据持久化 主从复制 自动故障恢复 集群化 这篇文章我们先介绍Redis的高可用保障的基础:数据 ...

最新文章

  1. Java字符串拼接的五种方法,哪种性能最好?
  2. python可以做什么工作好-Python可以做什么工作?Python有哪些方向?
  3. Docker 常见问题
  4. 002 辅助框架的设计
  5. GDataXML解析XML文档
  6. 语言五子棋无ai程序框图_微软多语言预训练模型T-ULRv2登顶XTREME排行榜
  7. DataTable的Merge方法和添加datatable到dataset
  8. 430单片机实现三人投票表决器_关于STC51下载器串口免冷启动简单方案
  9. ++x 和 x++的区别
  10. 孙玄达叔:年薪75万的真实技术面试实践攻略(篇章二)
  11. 获取注册表键值并格式转换
  12. 后台管理怎样用html实现,后台管理实现
  13. COMMENT的简单介绍,,及在Navicat中COMMENT的使用方法
  14. 扭蛋机(bilibili)
  15. Win10系统搜不到airpods?
  16. 一个定时器生成多路PWM波形的原理和方法成都自动化开发
  17. Mysql常用函数集合
  18. 基于改进AlexNet的植物中草药分类系统(源码&教程)
  19. 智能合约从入门到精通:JIDE集成开发工具
  20. 4 UML 图中,一张交互图显示一个交互,由一组对象及其之间的关系组成,包含它 们之间可能传递的消息,以下不是交互图的是( )

热门文章

  1. 计算机网络复习-应用层
  2. 操作系统(二十)进程互斥的硬件实现方法
  3. 【译】Using Machine Learning to Understand the Ethereum Blockchain
  4. Omnispace 收藏夹
  5. 【问链财经-区块链基础知识系列】 第三十九课 EOS与ETH体系结构比较全解析
  6. Android开发工具之Android Studio---如何打JAR包
  7. oracle 强制恢复,oracle数据库恢复
  8. vs2015 linux jni,使用Visual C++ 跨平台移动技术调试JNI Android 应用程序
  9. matlab 矩阵加减乘除运算
  10. c 实现html5,html5 实现手机摇一摇功能(C)