Redis 学习-持久化与主从复制
一、持久化
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 学习-持久化与主从复制的更多相关文章
- Redis实战 | 持久化、主从复制特性和故障处理思路
前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...
- Redis学习笔记10--Redis主从复制
redis主从复制配置和使用都非常简单.通过主从复制可以允许多个slave server拥有和master server相同的数据库副本.下面是关于redis主从复制的一些特点: 1.ma ...
- 10 分钟彻底理解 Redis 的持久化和主从复制
在这篇文章,我们继续有关Redis方面知识的学习,一起了解一下其中一个非常重要的内容:Redis的持久化机制. 什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在 ...
- Ubuntu redis 实战 持久化策略 主从复制 以及 故障恢复
推荐文章 redis数据结构学习 redis持久化 redis主从复制 redis哨兵
- 解密Redis的持久化和主从复制机制
Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执 ...
- Redis学习笔记(二) - 主从复制
概述 指将一台redis服务器上的数据,复制到其他redis服务器上,前者称为主服务器(master),后者称为从服务器(slave). 默认情况下主从关系为一对多关系. 数据复制是单向的,只能从主服 ...
- Redis的持久化和主从复制机制
Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) AOF 持久化记录服务器执行 ...
- Redis学习-持久化
Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令 ...
- Redis学习-持久化机制
Redis持久化的意义 在于故障恢复 比如你部署了一个redis,作为cache缓存,当然也可以保存一些较为重要的数据 如果没有持久化的话,redis遇到灾难性故障的时候(断电.宕机),就会丢失所有的 ...
随机推荐
- PostgreSQL中的partition-wise join
与基于继承的分区(inheritance-based partitioning)不同,PostgreSQL 10中引入的声明式分区对数据如何划分没有任何影响.PostgreSQL 11的查询优化器正准 ...
- postgresql中pg_walfile_name()
pg_walfile_name(lsn pg_lsn):将wal位置转换成文件名 pg_lsn数据类型可以用于存储LSN数据,LSN是指向WAL中某个位置的指针.pg_lsn用XLogRecPtr的形 ...
- USB安装ESXi出错,menu.c32 not a com32r image
USB安装EXSi出错,menu.c32 not a com32r image 不能进入安装界面. 提供提取的menu.c32 下载下来覆盖U盘根目录源文件 EXSi6.7测试可以用 文件csdn下载 ...
- 一款阿里开源的 Java 诊断工具
Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题. Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux. ...
- [LeetCode] 583. Delete Operation for Two Strings 两个字符串的删除操作
Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...
- 10 Spring框架--基于注解的IOC配置
1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...
- [CMD] 批处理
https://www.tutorialspoint.com/batch_script/batch_script_commands.htm
- P3275 [SCOI2011]糖果 题解
一道差分约束的模板题. 题目 题意:n个人每个人至少一个糖果,另外要满足k个不等式,求最少糖果数. 差分约束系统 给定一组不等式 $ x[i]-x[j]<=c[k] $ (或 $ x[i]-x[ ...
- Spring Cloud--Hystrix服务熔断(线程隔离/服务降级)代码实现
一旦服务阻塞就进行服务降级或线程隔离.要不然就会导致大面积服务的瘫痪,Hystrix就是干这个的,一出现不健康的服务就进行熔断,不阻塞后面线程的执行. 引入依赖: 加注解: 这三个注解可以用一个注解搞 ...
- Pycharm专业版配置远程服务器并自动同步代码
一.使用场景 如果每次都在本机上面写代码,然后传到服务器上面,在服务器上面运行就太麻烦了.这样的方式十分繁琐,效率很低. 因此,希望可以像下面一样操作: 可以直接在本机上码代码 自动将代码同步到远程服 ...