一、持久化

1. RDB

rdb 是 redis 内存到硬盘的快照,用于持久化

①. 通过执行命令,主动保存快照

save # 执行保存快照,执行时 redis 会处理阻塞状态直至执行完成。
bgsave # 异步执行保存快照。

②. 通过配置文件,自动生成快照策略

save 900 1 # 900秒内至少有1个key被改变则做一次快照
save 300 10 # 300秒内至少有300个key被改变则做一次快照
save 60 10000 # 60秒内至少有10000个key被改变则做一次快照

只要满足其中一条,就会通过 bgsave 命令自动保存 RDB 文件。

③. rdb 的所有配置

save m n
#配置快照(rdb)促发规则,格式:save <seconds> <changes>
#save 900 1 900秒内至少有1个key被改变则做一次快照
#save 300 10 300秒内至少有300个key被改变则做一次快照
#save 60 10000 60秒内至少有10000个key被改变则做一次快照
#关闭该规则使用svae “” dbfilename dump.rdb
#rdb持久化存储数据库文件名,默认为dump.rdb,建议改为dump-6379.rdb stop-write-on-bgsave-error yes
#yes代表当使用bgsave命令持久化出错时候停止写RDB快照文件,no表明忽略错误继续写文件。 rdbchecksum yes
#在写入文件和读取文件时是否开启rdb文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。 rdbcompression yes
#是否开启RDB文件压缩,该功能可以节约磁盘空间

④. 其他触发 bgsave 的方式

主从的全量复制时

debug reload 时

shutdown

2. AOF

AOF 是将 Redis 执行的每一条命令追加到文件中。

①. 开启 AOF(默认是关闭状态),通过命令开启,并回写到配置文件。

127.0.0.1:> config get appendonly
) "appendonly"
) "no"
127.0.0.1:> config set appendonly yes
OK
127.0.0.1:> config rewrite
OK

②. 同步策略,由配置参数 appendfsync 决定。

no:不使用 fsync 方法同步,而是交给操作系统write函数去执行同步操作,在 linux 操作系统中大约每 30 秒刷一次缓冲。这种情况下,缓冲区数据同步不可控,并且在大量的写操作下,aof_buf 缓冲区会堆积会越来越严重,一旦 redis 出现故障,数据丢失严重。
always:表示每次有写操作都调用 fsync 方法强制内核将数据写入到 aof 文件。这种情况下由于每次写命令都写到了文件中, 虽然数据比较安全,但是因为每次写操作都会同步到 AOF 文件中,所以在性能上会有影响,同时由于频繁的 IO 操作,硬盘的使用寿命会降低。
everysec:数据将使用调用操作系统 write 写入文件,并使用 fsync 每秒一次从内核刷新到磁盘。 这是折中的方案,兼顾性能和数据安全,所以 redis 默认推荐使用该配置。

③. 文件重写

手动触发

bgrewriteaof # 执行此命令

自动触发

auto-aof-rewrite-percentage 100 # 增长百分比100时重写
auto-aof-rewrite-min-size 64mb # 当AOF文件大于该值重写

④. AOF 的全部配置

auto-aof-rewrite-min-size 64mb
#当AOF文件大小大于该值时候才可能重写。 auto-aof-rewrite-percentage 100
#增长百分比,如100代表当前AOF文件是上次重写的两倍时候才重写。 appendfsync everysec
#no:不使用fsync方法同步,而是交给操作系统write函数去执行同步操作,在linux操作系统中大约每30秒刷一次缓冲。这种情况下,缓冲区数据同步不可控,并且在大量的写操作下,aof_buf缓冲区会堆积会越来越严重,一旦redis出现故障,数据
#always:表示每次有写操作都调用fsync方法强制内核将数据写入到aof文件。这种情况下由于每次写命令都写到了文件中, 虽然数据比较安全,但是因为每次写操作都会同步到AOF文件中,所以在性能上会有影响,同时由于频繁的IO操作,硬盘的使用寿命会降低。
#everysec:数据将使用调用操作系统write写入文件,并使用fsync每秒一次从内核刷新到磁盘。 这是折中的方案,兼顾性能和数据安全,所以redis默认推荐使用该配置。 aof-load-truncated yes
#当redis突然运行崩溃时,会出现aof文件被截断的情况,Redis可以在发生这种情况时退出并加载错误,以下选项控制此行为。
#如果aof-load-truncated设置为yes,则加载截断的AOF文件,Redis服务器启动发出日志以通知用户该事件。
#如果该选项设置为no,则服务将中止并显示错误并停止启动。当该选项设置为no时,用户需要在重启之前使用“redis-check-aof”实用程序修复AOF文件在进行启动。 appendonly no
#yes开启AOF,no关闭AOF appendfilename appendonly.aof
#指定AOF文件名,建议改为 appendonly-6379.aof

二、主从复制

1. 实现方式

即使同一台机器,也不建议使用 127.0.0.1

①. 命令方式

slaveof 127.0.0.1 6379 # 在从节点上执行此命令,将该 ip 和 port 设置为 master 节点

slaveof no one # 取消主从复制,将自己恢复为 master 节点

②. 配置文件方式

slaveof 127.0.0.1 6379 # 修改从节点配置文件
slaveof-read-only yes # 是否只读

2. 其他命令

info replication # 查看主从状态

Redis 学习-持久化与主从复制的更多相关文章

  1. Redis实战 | 持久化、主从复制特性和故障处理思路

    前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...

  2. Redis学习笔记10--Redis主从复制

    redis主从复制配置和使用都非常简单.通过主从复制可以允许多个slave server拥有和master server相同的数据库副本.下面是关于redis主从复制的一些特点:       1.ma ...

  3. 10 分钟彻底理解 Redis 的持久化和主从复制

    在这篇文章,我们继续有关Redis方面知识的学习,一起了解一下其中一个非常重要的内容:Redis的持久化机制. 什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在 ...

  4. Ubuntu redis 实战 持久化策略 主从复制 以及 故障恢复

    推荐文章 redis数据结构学习 redis持久化 redis主从复制 redis哨兵

  5. 解密Redis的持久化和主从复制机制

    Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执 ...

  6. Redis学习笔记(二) - 主从复制

    概述 指将一台redis服务器上的数据,复制到其他redis服务器上,前者称为主服务器(master),后者称为从服务器(slave). 默认情况下主从关系为一对多关系. 数据复制是单向的,只能从主服 ...

  7. Redis的持久化和主从复制机制

    Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) AOF 持久化记录服务器执行 ...

  8. Redis学习-持久化

    Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令 ...

  9. Redis学习-持久化机制

    Redis持久化的意义 在于故障恢复 比如你部署了一个redis,作为cache缓存,当然也可以保存一些较为重要的数据 如果没有持久化的话,redis遇到灾难性故障的时候(断电.宕机),就会丢失所有的 ...

随机推荐

  1. ubuntu16.04 安装使用meld及问题

    本文链接:https://blog.csdn.net/ai_liuliu/article/details/95504095安装meldsudo apt-get install meld启动meld方法 ...

  2. PG11开启WAL归档

    -创建归档目录 mkdir -p $PGDATA/archive_wals chown -R postgres.postgres $PGDATA/archive_wals -修改参数(在配置文件中配置 ...

  3. html页面自适应宽度

    html页面实现响应式的方式有很多,本篇介绍懒人必备一招见效的方法. 在head标签中加入 <meta name="viewport" content="width ...

  4. CFCA证书工具类

    jar:com.cfca.pkibase-1.0.jar import java.io.UnsupportedEncodingException; import java.security.Secur ...

  5. LeetCode 513. 找树左下角的值(Find Bottom Left Tree Value)

    513. 找树左下角的值 513. Find Bottom Left Tree Value 题目描述 给定一个二叉树,在树的最后一行找到最左边的值. LeetCode513. Find Bottom ...

  6. [转帖]Helm V2 迁移到 V3 版本

    Helm V2 迁移到 V3 版本 -- :: Mr-Liuqx 阅读数 63更多 分类专栏: kubernetes 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上 ...

  7. Delphi 将视频 Base64 字符串转换为视频二进制文件

    var Bytes: TBytes; Stream: TBytesStream; begin with System.NetEncoding.TBase64Encoding.Create do try ...

  8. Nvidia Jetson TX2开发板学习历程(1)- 详细开箱、上电过程

    考试周已经结束了,开发板也已经到了.希望借着这个假期能够好好的利用这块开发板学习Linux系统以及Tensorflow的相关知识. 我打算将学习历程通过博客的方式写出来,作为自己的笔记,也可以供以后拿 ...

  9. HTML常用技巧

    1. 为网页链接添加快捷键:accesskey 属性 https://zhidao.baidu.com/question/2267343500557447508.html 2. 键盘事件设置快捷键:h ...

  10. mysql中常见正则表达式的应用

    查找name字段中以'st'为开头的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st'; 查找name字段中以'ok ...