redis的持久化

redis为什么要有持久化?
redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,如果宕机或断电,数据就会丢失,所以redis提供了持久化功能。
持久化过程是怎么样的?
redis会创建一个子进程,然后将数据写入一个临时文件,在持久化过程结束之后,再用这个临时文件替换上次持久化好的文件。

一、RDB(redis database)

在默认情况下,redis是 使用RDB进行持久化,保存的文件为dump.rdb

1、如何触发rdb?

(1)在redis的配置文件中,有一条命令sava [时间] [更改条数],指在这个时间内进行更改,符合这条命令下,就会创建一个dump.rdb文件,而各个文件会替换掉旧的dump文件
在这里插入图片描述
(2)在执行flushall时,也会触发rdb规则,也就是会生成一个dump.rdb文件
(3)在退出redis时,也会产生rdb文件

2、数据如何恢复?

:如何恢复数据?也就是在dump.rdb文件中的数据如何恢复?
:将rdb文件放在redis的启动目录之下,redis在启动的时候就会恢复dump.rdb的数据
在这里插入图片描述

3、优缺点

优点:适合大规模的数据恢复、对数据的完整性要求不高
缺点:需要一定的时间间隔进程进行操作,如果在这个时间中意味宕机,那修改的数据也就没有了;在fork进程时,会占用一定的内存空间。

二、AOF(append only file)

1、触发条件

追加文件,其实就是将执行的写的命令都记录下来,在恢复的时候,就将文件全部执行一遍,达到数据恢复的作用,保存的文件为appendonly.aof文件
在这里插入图片描述
所以只需要将 appendonly no 改为 appendonly yes 即可
更改完毕后需要将redis服务重启
在这里插入图片描述
在appendonlf.aof文件中就会记录每次的修改命令

2、appendonlf.aof文件出现人为修改,导致文件命令出现问题,如何解决

文件出现异常时,在使用客户端连接服务端是进不去的,所以必须作出更改,在与redis-server同级目录下有一个文件 redis-check-aof,同样其实还有一个 redis-check-rdb ,都是用来检查异常并作出修改,这里以redis-check-aof为例

在这里插入图片描述

3、优缺点

优点:每次修改都进行同步
缺点:aof文件远大于rdb,修复数据肯定也比rdb慢

4、重写规则

fork一个子进程来重写appendaof.aof文件,压缩为更小的文件
在这里插入图片描述

5、如何恢复数据?

与rdb一样,但是需要将前面清除数据的命令删除,如果是意外数据丢失,可直接重启redis-server进行数据恢复,可能重启之前需要进行redis-check-aof,也就是需要进行上面的第二步骤

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值