Redis深度历险(6)-持久化

本文深入探讨了Redis的三种持久化策略:快照(RDB)、增量备份(AOF)及混合式持久化,对比了各自的优缺点,包括触发机制、备份效率、数据安全性等关键信息。
1 快照(RDB)方式

快照是一种全量备份的持久化方式,默认生成的是名为dump.rbd的二进制文件;在Redis的配置文件中可以设置其触发条件,将当前的数据全量写入dump.rdb文件中,使用的是bgsave命令。

save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,Redis就会自动触发BGSAVE命令创建快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,Redis就会自动触发BGSAVE命令创建快照。

  • 子进程执行备份命令

备份一次数据会耗费相当多的时间,bgsave命令的实质是启动一个子进程(注意Redis是单线程的,所以不能启动子线程,只可启动子进程)去执行备份的操作。

  • CopyOnWrite

子进程备份时采用的是写时复制策略,即开始备份时子进程仍是对当前的二进制数据进行备份,当父进程更改了这份数据时,才将这份被更改的空间先复制出一份副本给子进程使用,这样就避免了副本的全量复制

  • 使用快照备份的缺点

有一定的触发条件,且每次都需要进行全量的复制,时间效率较低,若在没有触发bgsave命令时发生宕机则会发生数据的损失

  • 使用快照备份的优点

二进制文件占用空间小,并且在Redis启动时数据读取速度快

2 增量备份(Append-Only,aof)

增量备份每隔一段时间都会记录这段时间的写入命令和删除命令然后存储在一个名为appendonly.aof的文本文件中,与快照备份相比,增量备份速度很快,并且每隔一定时间进行备份,实时性好,默认不开启该模式,需要通过

appendonly yes

来开启

  • aof重写

由于appendonly.aof文件存储的是Redis命令,所以时间一久,占用的空间会很大。并且在Redis重启时需要重放的命令数量很多。此时需要aof重写,即在一段时间后将备份文件删除并且重新进行一次备份,以减少备份文件中的命令数量和大小。aof重写使用bgrewriteaof命令来实现。

  • fsync命令

在向aof文件中写入备份命令时,若突然宕机则会发生写入失败,此时要使用linux提供的glibc命令。这个命令能强制将内存中的数据刷新到磁盘中,如果Redis进程实时执行这个函数,那么就不会发生写入丢失,但是由于fsync命令执行很耗费时间,所以Redis默认每秒执行一次。

appendfsync always #每次有数据修改发生时都会写入AOF文件,这样会严重降低Redis的速度
appendfsync everysec #每秒钟同步一次,显示地将多个写命令同步到硬盘
appendfsync no #让操作系统决定何时进行同步

  • 使用增量备份的缺点

增量备份文件中存储的是写入命令,在Redis启动时重放命令的时间较长,备份文件占用空间较大

3 Redis 4.0 混合式持久化

Redis重启时很少使用RDB文件来载入数据,因为可能发生大量的数据失效情况,而采用AOF重放的方式又会耗费很长时间,所以在Redis 4.0中为了解决这个问题,开始采用混合持久化的方式,即将dump.rdb文件和appendonly.aof文件放在一起,但是aof文件只保留了rdb持久化之后的那部分命令,所以aof文件会小很多。
在Redis重启时,先加载rdb中的二进制数据,然后使用aof对后续的那部分数据进行重放。

### 回答1: Redis是一款内存数据库,性能高、支持多种数据结构、提供丰富的功能,得到了广泛的应用。但其维护操作却需要一定的技巧,开源社区中也有大量的文档、文章来讲解。其中,Redis深度历险一书介绍了Redis的基础知识、高级特性、应用场景和实战案例。该书深入剖析了Redis内部的实现原理,让读者更好地理解其运行机制、调优方法和错误排查。主要内容包括Redis线程模型、内存优化、IO模型、事务、持久化、集群、性能调优、应用场景等。其中,集群方面包括Redis Cluster和Redis Sentinel两类架构的详细介绍和使用方法。性能调优方面,介绍了一些常见的性能问题和解决方案,以及使用Redis的最佳实践。对于有一定Redis使用经验的开发人员或系统工程师,这本书可以帮助他们更好地优化和管理Redis实例,也可以让他们更深入地掌握Redis相关知识。对于想学习Redis的初学者,建议还需要通过其他资料了解Redis基本概念和用法。总的来说,Redis深度历险是一本值得阅读的Redis专业书籍,它为读者提供了许多经验和实践经验,也为企业中使用Redis的团队提供了宝贵的参考资料。 ### 回答2: Redis是一款开源的高性能NoSQL数据库,近年来在企业级应用中广受欢迎。《Redis深度历险》是一本深入介绍Redis的技术书籍,由黄健宏等人撰写。 这本书详细介绍了Redis的架构、原理、数据结构、使用场景、性能优化、集群部署等方面的知识,通过系统化的学习可以在Redis的使用和优化方面获得很大的收获。 《Redis深度历险》中包含大量的实际代码示例和生产环境中的案例分析,可以帮助读者深入理解Redis的实现细节和应用场景,并快速应用到自己的实战项目中。同时,这本书也适合那些想深入了解分布式系统的架构师、程序员、运维工程师等 IT 技术人员。 此外,书中还介绍了很多Redis的新特性和应用场景,如Redis的流式计算、Redis与gRPC的结合使用等,让人们对Redis的使用和应用场景有了更深刻的认识。 总之,《Redis深度历险》是一本非常实用的Redis技术指南,对于想深入学习Redis的技术人员来说是非常必备的一本读物。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值