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遇到灾难性故障的时候(断电.宕机),就会丢失所有的 ...
随机推荐
- php 调用微信上传临时素材接口 {“errcode”:41005,”errmsg”:”media data missing hint”}
原因:由于PHP5.6以前与之后的版本curl_setopt有差异.PHP5.6以后不再支持”@文件路径”的方式. $picPath= "public\public\upload\xxx.p ...
- [转]JS - Promise使用详解2(ES6中的Promise)
原文地址:https://www.hangge.com/blog/cache/detail_1638.html 2015年6月, ES2015(即 ECMAScript 6.ES6) 正式发布.其中 ...
- Python之内置装饰器property
# -*- coding: utf-8 -*- # author:baoshan class Student(object): def __init__(self, name): self.name ...
- docker安装并运行redis
拉取镜像: [mall@VM_0_7_centos ~]$ sudo docker pull redis:3.2 [sudo] password for mall: 3.2: Pulling from ...
- matlab学习笔记8 基本绘图命令-初级二维绘图/交互式绘图
一起来学matlab-matlab学习笔记8 基本绘图命令_5 初级二维绘图/交互式绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- [转自baidu]修正古人五行,《七行说》之提出
一.论原五行相生.相克关系不妥之处: 祖国医学原“五行说”即金.木.水.火.土.在五行学说中说相生规律为:金生水:水生木:木生火:火生土:土生金.相克规律为:火克金:金克木:木克土:土克水:水克火.这 ...
- [LeetCode] 200. Number of Islands 岛屿的数量
Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...
- Unreal Engine 4 中的 UI 优化技巧
转自:https://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## Unreal Open Day 2017 活动上 Epic Games 开发者支持工程师郭 ...
- C# EF6框架连接postgresql数据库
https://blog.csdn.net/jwdym01/article/details/102845602
- Oracle Spatial图层元数据坐标范围影响R-TREE索引的ROOT MBR吗?
Oracle Spatial的空间索引R-TREE,其实现原理为一级级的MBR(最小定界矩形).我突然想到一个问题,它的ROOT MBR是怎么确定的?是根据元数据表user_sdo_geom_meta ...