redis持久化

Redis持久化

首先redis中的数据都保存在内存中,这样可以保证较快的操作速率,但内存中的东西不是持久的,当发生断电等重大故障的时候,会导致内存中的数据丢失
redis持久化就是为了解决这一问题而将redis中的数据持久化到磁盘上,防止因发生灾难性故障时,而导致redis中的数据全部丢失
redis提供了两种持久化的方式,分别是RDB和AOF
RDB:通过对redis数据进行快照,然后将快照持久化到磁盘中
AOF:将执行过的指令记录下来,追加到一个文件末尾
AOF和RDB可以同时进行使用,在redis重启或者灾难性修复的时候,使用AOF可以使数据恢复的完整性更高

RDB持久化机制

RDB当满足条件的时候对redis中的数据库进行持久化,条件一般是

   save 900 1
   save 300 10
   save 60 10000

意思是60秒内redis写入一万条数据,5分钟内redis写入10条数据,15分钟内redis写入11条数据,则将redis中的数据进行持久化,当然也可以通过save和bgsave命令主动进行持久化。
当要进行持久化时,redis会保存当前时间点的全量数据快照,然后redis会fork一个子进程来进行持久化,但主进程在持久化过程中不会进行任何的IO操作,也就是redis无法响应其他命令
fork完成后,redis会先将数据写入到一个临时的文件当中,等持久化结束,才会用该文件替换上一次持久化的文件
优点
1.适合对大规模数据的恢复
2.基于RDB来重启和恢复数据更加的快速

缺点
1.fork进行会导致redis的内存翻倍
2.由于是数据的全面同步,数据量太大会由于IO影响性能
3.如果redis出现故障,会导致丢失当前到最近一次持久化之间的数据

AOF持久化机制

AOF,英文是Append Only File,意思是只允许追加不允许修改的文件。
AOF机制,是将redis执行过的写指令记录下来,在需要恢复的时候,将指令从头到尾执行一遍即可
AOF机制默认是关闭的,需要通过配置redis.conf中的appendonly yes打开AOF功能,AOF持久化策略每秒中执行一次,将redis中缓存的指令,持久化到磁盘中,这样就会丢失,也只会丢失这一秒的指令
因为AOF一直在末尾增加新的指令,如果不对文件进行处理,会导致文件越来越大。
redis支持对AOF文件进行重写,当文件的大小超过所设置的阀值的时候,redis就会对AOF文件进行压缩,去掉过期的,重复的、没有用的指令,只保留能恢复数据的最小指令集。
AOF重写过程
1.跟RDB一样先进行fork,创建一个子进程
2.子进程将新的AOF写到一个临时文件里面
3. 主进程继续将变动写到内存和旧的AOF文件当中
4. 当子进程完成重写之后,向主进程发送信号,主进程接受到信号将新指令写到新的临时文件当中
5. 用临时文件替换旧的AOF文件,成为新的AOF文件。

优点
1.可读性高,数据不易丢失
2.只能在末尾追加,没有磁盘的寻址开销,写入性能高,

缺点
1.AOF文件通常比RDB文件更大
2.数据的还原数度也更慢

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

余额充值