当前位置:网站首页>Redis持久化
Redis持久化
2022-07-20 05:31:00 【前进的Superman】
系列文章目录
前言
提示:Redis持久化
提示:以下是本篇文章正文内容,下面案例可供参考
Redis持久化RDB
触发机制
save的规则满足的情况下,会自动触发rdb规则
执行flushall 命令,也会出发rbd规则
推出redis,也会产生rdb文件
备份就会自动生产一个durp.rdb文件
如何恢复rdb文件
只需要将rdb文件放在我们的redis的启动目录就可以,redis启动的时候会自动检查durp.rdb 回复文件中的数据
查看你需要存在的目录
[[email protected] ~]# redis-cli -p 6379
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis/6379" #如果在这个目录下存在durp.rdb文件,启动就会自动恢复其中的数据
127.0.0.1:6379>
RDB的优点
RDB文件是紧凑的二进制文件,比较适合做冷备,全量复制的场景
相对于AOF持久化机制来说,直接基于RDB数据文件来重启和恢复Redis进程,更加快速
RDB对Redis对外提供的读写服务,影响非常小,可以让Redis保持高性能,因为Redis主进程只需要fork一个子进程,让子进程执行磁盘IO操作来进行RDB持久化即可
RDB使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了Redis的高性能
RDB的缺点
如果想要在Redis故障时,尽可能少的丢失数据,那么RDB没有AOF好、
RDB每次在fork子进程来执行RDB快照数据文件生成的时候,如果数据文件特别大,可能会导致对客户端提供的服务暂停数毫秒,或者甚至数秒
RDB无法实现实时或者秒级持久化
Redis持久化AOF
将我们的所有命令都记录下来 history 恢复的时候就把这个全部在执行一遍
AOF默认是不开启的,我们需要手动进行配置,我们只需要将appendonly改为yes就开启aof了
重启redis就可以生效了
如果这个aof 文件有错位,这时候redis是启动不起来的,我们需要修复这个aof文件
redis 给我们提供了一个工具 redis-check-aof --fix
修复后如果文件正常 重启就可以恢复了
AOF的优点
AOF可以更好的保护数据不丢失
AOF日志文件以append-only模式写入,写入性能比较高
AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写
适合做灾难性的误删除紧急恢复
AOF的缺点
对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大,恢复速度慢
AOF开启后,支持的写QPS会比RDB支持的写QPS低,因为AOF一般会配置成每秒fsync一次日志文件,当然,每秒一次fsync,性能也还是很高的
以前AOF发生过bug,就是通过AOF记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来
RDB和AOF到底该如何选择
1、不要仅仅使用RDB,因为那样会导致你丢失很多数据;
2、也不要仅仅使用AOF,因为那样有两个问题:
你通过AOF做冷备,没有RDB做冷备,恢复速度更快; 第二,RDB每次简单粗暴生成数据快照,更加健壮,可以避免AOF这种复杂的备份和恢复机制的bug
3、综合使用AOF和RDB两种持久化机制,用AOF来保证数据不丢失,作为数据恢复的第一选择;
用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,还可以使用RDB来进行快速的数据恢复
边栏推荐
猜你喜欢
[dish of learning notes dog learning C] circular sentence
mysql_记录执行过的sql
Introduction to microservice theory
Flink DataStream API (一)执行环境
Configuration of Visual Studio development environment
mysql_不区分大小写
Learn about spark project on nebulagraph
[dish of learning notes, dog learning C] getting to know the pointer for the first time
[dish of learning notes, dog learning C] get familiar with common keywords, define constants and macros
Matplotlib教程(一)【初识Matplotlib】
随机推荐
【学习笔记之菜Dog学C】求值表达式
【学习笔记之菜Dog学C】数据存储
如何使用 IDEA 打 jar 包
dolphinscheduler调用shell脚本并传多个参
<srcipt>标签上的 ‘defer‘和‘async‘ 属性的作用
Introduction à la théorie des micro - services
[dish of learning notes dog learning C] function
ClickHouse启动失败_Unit clickhouse-server.service entered failed state
Jupyter notebook如何更换主题、更改字体大小?
Flink 水位线(Watermark)
一致性哈希,虚拟节点,布隆过滤器
文件权限管理
[dish of learning notes, dog learning C] first learn operators and original code, inverse code, complement code
mysql_账号授权权限回收、账号锁定解锁、账号创建删除
输入一个整数和一棵二元树
LeetCode编程实践——腾讯精选50题 (一)
数据生成器 -支持多种类型
JDBC learning notes
04—— el 和 data 的两种写法
05—— mvvm 模型