Redis的持久化

持久化方式

redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB

原理:redis数据保存在内存中,为避免数据丢失,将某个时间节点的数据快照保存至一个二进制文件(经过压缩),通过该文件可以还原生成RDB文件时的数据库状态。

它是备份整个redis内存镜像。

AOF

原理:AOF持久化通过保存redis服务器所有的写命令来记录数据库状态,服务器启动时,通过载入和执行aof保存的命令来还原服务器关闭之前的数据库状态。

在这里插入图片描述

AOF持久化方式

appendonly yes:表示使用aof持久化的方式

  1. appendfsync always:执行一个命令,持久化一次。
  2. appendfsync everysec:每秒钟持久化一次,故障时会丢一秒钟数据。
  3. appendfsync no:由系统决定什么时候持久化。
AOF重写

auto-aof-rewrite-min-size 64mb: 当文件达到64mb的时候,会重写命令,将垃圾命令丢弃,整合成最终的结果命令,提高效率。

auto-aof-rewrite-percentage 100:aof文件至上次重写后文件大小增加100%则再次触发重写。

bgrewriteaof:执行重写命令

建议

关于 AOF 和 RDB 的选择问题,三点建议:

  • 数据不能丢失时,内存快照和 AOF 的混合使用是一个很好的选择;
  • 如果允许分钟级别的数据丢失,可以只使用 RDB;
  • 如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个平衡。

持久化方式对比

命令RDBAOF
启动优先级
体积
恢复速度
数据安全容易丢数据根据策略决定

混合持久化方式

Redis4.0之后新特性:混合持久化。

aof-use-rdb-preamble yes:设置开启混合持久化(必须先开启aof持久化方式

数据紧凑,更加安全,恢复更快。

文件结构

在appendonly.aof文件中,既存在RDB格式(二进制),也存在AOF格式(命令)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些关于 Redis 持久化的可能面试问题: 1. Redis持久化有哪些方式? Redis持久化有两种方式,一种是 RDB 持久化,一种是 AOF 持久化。 2. RDB 持久化和 AOF 持久化有什么区别? RDB 持久化是将 Redis 在内存中的数据快照保存到磁盘上,而 AOF 持久化则是将 Redis 执行的每条写命令记录到磁盘上。RDB 持久化可以节约磁盘空间,但可能会丢失最近的一些数据,而 AOF 持久化可以保证数据不会丢失,但可能会占用更多的磁盘空间和写入时间。 3. Redis持久化机制是如何保证数据一致性的? Redis持久化机制可以通过在每次写操作后立即同步到磁盘,或者设置定期同步时间来保证数据一致性。 4. Redis持久化可以在运行时进行吗? 可以,Redis持久化可以在运行时进行配置和切换,例如可以在运行时从 RDB 切换到 AOF 持久化,或者从 AOF 切换到 RDB 持久化。 5. Redis持久化会对性能产生影响吗? 会,Redis持久化会增加磁盘 I/O 开销,可能会对写入性能产生一定的影响,但可以通过合理的配置来平衡性能和数据一致性。 6. Redis持久化可以与 Redis 集群一起使用吗? 可以,Redis持久化可以与 Redis 集群一起使用,但需要注意配置文件的设置和数据同步的策略。 总之,Redis持久化是保证数据一致性和可靠性的重要手段,需要根据具体的业务需求和性能要求来选择合适的持久化方式,并进行合理的配置和优化。在面试中,还需要了解 Redis 持久化的原理、机制、优缺点、与集群的结合等方面的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值