Redis持久化

Redis作为内存数据库,为了防止宕机导致数据丢失,提供了RDB(快照)和AOF(追加日志)两种持久化方式。RDB是通过快照生成二进制压缩文件,适合数据量小、完整性要求高的场景,但可能丢失最后一次快照后的数据。AOF记录命令操作,保证数据完整性,但性能较低。Redis 4.0引入混合持久化,结合RDB和AOF的优点。在数据恢复时,RDB+AOF优先使用AOF,以减少数据丢失。
摘要由CSDN通过智能技术生成

题记:
文章内容输出来源:拉勾教育Java高薪训练营。
本篇文章是 Redis 学习课程中的一部分笔记。

Redis持久化

为什么要持久化?

Redis是内存数据库,宕机后数据会消失。
Redis重启后快速恢复数据,要提供持久化机制
Redis有两种持久化方式:RDB和AOF
注意:Redis持久化不保证数据的完整性。
当Redis用作DB时,DB数据要完整,所以一定要有一个完整的数据源(文件、mysql)
在系统启动时,从这个完整的数据源中将数据load到Redis中
数据量较小,不易改变,比如:字典库
通过info命令可以查看关于持久化的信息

# Persistence loading:0 
rdb_changes_since_last_save:1 
rdb_bgsave_in_progress:0 
rdb_last_save_time:1589363051 
rdb_last_bgsave_status:ok 
rdb_last_bgsave_time_sec:-1 
rdb_current_bgsave_time_sec:-1 
rdb_last_cow_size:0 
aof_enabled:1 
aof_rewrite_in_progress:0 
aof_rewrite_scheduled:0 
aof_last_rewrite_time_sec:-1 
aof_current_rewrite_time_sec:-1 
aof_last_bgrewrite_status:ok 
aof_last_write_status:ok 
aof_last_cow_size:0 
aof_current_size:58 
aof_base_size:0 
aof_pending_rewrite:0 
aof_buffer_length:0 
aof_rewrite_buffer_length:0 
aof_pending_bio_fsync:0 
aof_delayed_fsync:0

一、RDB

RDB(Redis DataBase),是redis默认的存储方式,RDB方式是通过快照( snapshotting )完成的。
这一刻的数据,不关注过程

1、触发快照的方式

  • 符合自定义配置的快照规则
  • 执行save或者bgsave命令
  • 执行flushall命令
  • 执行主从复制操作 (第一次)

2、配置参数定期执行

在redis.conf中配置:save 多少秒内 数据变了多少

# 不使用RDB存储 不能主从 
save "" 
# 表示15分钟(900秒钟)内至少1个键被更改则进行快照。 
save 900 1 
# 表示5分钟(300秒)内至少10个键被更改则进行快照。 
save 300 10 
# 表示1分钟内至少10000个键被更改则进行快照。
save 60 10000 

漏斗设计,提供性能

3、命令显式触发

在客户端输入bgsave命令。

127.0.0.1:6379> bgsave 
Background saving started

4、RDB执行流程(原理)
在这里插入图片描述

  • Redis父进程首先判断:当前是否在执行save,或bgsave/bgrewriteaof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值