Redis持久化机制

Redis有两种持久化机制,RDB(Redis Database)和AOF(Append Only File)

RDB持久化

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

具体来说,Redis会单独创建(fork)一个子进程来进行持久化,它将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。

优点:

整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。

缺点:

RDB在一定间隔时间做一次备份,所以如果redis意外宕机的话,最后一次持久化后的数据可能丢失。

另外,在备份的时候,内存中的数据被克隆了一份,导致需要更多的存储空间。

开启方式:

在redis.conf中的SNAPSHOTTING下,配置save <seconds> <changes>(save 保存间隔 更改次数),例如save 900 1(每900秒保存一次,如果有至少一个key发生改变)

AOF持久化

记录服务器接收到的每一个写操作(读操作不记录),这些操作将在服务器启动时再次执行,重新构建原始数据集。

优点:

同步持久化,每次发生数据变更会被立即记录到磁盘,数据完整性比较好。

它有序地保存了对数据库执行的所有写操作,这些操作以Redis协议的格式保存,其内容可读性高,方便分析。

缺点:

备份相同的数据,AOF文件要远大于RDB文件,恢复速度慢于RDB。

开启方式:

在redis.conf中的APPEND ONLY MODE下,配置appendonly yes,配置appendfsync always(意为每次执行写操作都进行备份,也可改为appendfsync everysec每秒备份)

持久化建议

在Redis中同时使用AOF和RDB进行持久化。这种情况下,当Redis重新启动时会优先使用AOF文件来重建原始数据集,因为它保存的数据更加完整。但不要仅使用AOF,通过RDB备份的数据在某些极端情况下也可能会派上用场(比如对数据完整性要求不高但需要快速恢复的情况、AOF文件故障的情况)。

当然,如果只希望数据在Redis运行期间存在,可以禁用持久化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值