Redis持久化

Redis是内存数据库,为防止数据丢失提供了持久化功能。主要有RDB和AOF两种方式。RDB在指定时间将内存数据集快照写入磁盘,适合大规模数据恢复,但可能丢失最后一次持久化后的数据;AOF以日志形式记录写操作,恢复时重新执行指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis是内存数据库,如果不将数据保存到磁盘,服务器进程一旦结束,所以数据库信息将丢失,所以Redis提供了持久化功能。

RDB(Redis DataBase)

在指定的时间内将内存中的数据集快照写入磁盘内,它恢复时时直接将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化操作,会先将数据写到一个临时文件中,待持久化过程都结束,再用这个临时文件替换上次持久化好的文件。整个过程中主进程不进行仍和IO操作,确保了极高的性能。如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是非常敏感,那RDB要比AOF方式更加高效。RDB的缺点就是最后一次持久化可能丢失数据。一般默认是使用RDB方式,不需要修改配置。(rdb保存的文件名是dump.rdb文件)

dbfilename dump.rdb #配置文件中配置持久化文件名

### rdb持久化规则
#900秒内,至少有一个key修改,进行持久化
save 900 1
#300秒内,至少有10个key修改,进行持久化
save 300 10
#60秒内,至少有10000key修改,进行持久化
save 60 10000
  • 触发机制
    1、save的规制机制满足的情况下,会自动触发
    2、执行flushall操作时也会触发
    3、推出Redis,也会产生rdb文件
    备份会自动生成dump.rdb文件
  • 如何恢复rdb文件
    1、只需要将rdb文件放在Redis的启动目录下,在Redis启动的时候会自动检查rdb文件恢复其中的数据。

优点
1、适合大规模数据恢复
2、对数据完整性要求不高
缺点
1、需要一定时间进程操作,如果Redis宕机了,最后一次修改的数据就丢失了。
2、fork子进程的时候,会占用一定的内存空间。

AOF(Append Only File)

将我们的所以执行命令都记录下来(history),恢复的时候就把这个文件再执行一遍。
以日志的形式去记录每一个写的操作,将Redis所有执行过的指令记录下来(读不记录),只许追加文件,但不可以改写文件。Redis重启的时候会读取文件重建数据。
AOF保存的时appendonly.aof文件

配置文件配置:

appendonly no #默认是不开启aof的,大部分情况下,rdb完全够用
appendfilename "appendonly.aof" #持久化的文件名字
#appendfsync always #每次修改都会sync,消耗性能
appendfsync everysec #每秒执行一次sync,可能会丢失一秒数据
#appendfsync no #不执行sync,这个时候操作系统自己同步数据,速度最快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值