Redis持久化方法

持久化即将数据存储在硬盘中,Redis为我们提供了两种持久化选项:一种叫快照(snapshoting),另一种叫只追加文件(append-only file,AOF)。

快照(snapshoting)

快照就是将某个时刻的数据持久化到硬盘。如果系统崩了,那么用户只是丢失最近一次生成快照之后更改的数据,之前的数据还是存在的。

创建快照的几种方法:

  1. 客户端向Redis发送BGSAVE命令创建快照。
  2. 客户端向Redis发送SAVE命令创建快照。
  3. 设置save配置选项,可以自动触发BGSAVE命令,触发一次写一次快照。
  4. 当一个Redis服务器与另一个Redis服务器互联时,并且向对方发送SYNC命令,如果主服务器没有执行BGSAVE或者没有刚执行BGSAVE,那么就会执行BGSAVE并创建一个快照。

AOF

AOF就是在执行写命令的时候,被执行的写命令也会被复制到硬盘里。通过名字append就会知道,这要写也是写在文件的末尾,以此来记录数据的变化。AOF持久化可以通过配置append-only yes选项打开,配置appendfsync可以确定同步频率。

appendfsync选项

  • always,每个Redis命令都执行,也就是都要同步到硬盘,很显然这样搞得Redis速度也够呛,但是这种情况系统崩了的话,丢失的数据也最少。
  • everysec,看名字就知道是每秒钟,稍稍比alway写的频率低了一些。这种方法基本权衡了安全和性能,写的速度也没那么快了,但也不至于像no那样丢失的命令那么多。
  • no,这个就完全取决于操作系统了,OS说啥时候同步就啥时候同步。这个方法基本就不推荐使用了,因为刚才也说了,如果系统出点啥问题,这个选项丢失数据最多

参考资料

Redis In Action》, siah L. Carlson, Manning

  • 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、付费专栏及课程。

余额充值