redis持久化

redis持久化

持久化的方式
snapshotting
Append-only file
虚拟内存
diskstore
1.Snapshotting
快照是默认的持久化方式
就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.db.
可以配置redis在n秒内如果超过m个key被修改就自动快照
在这里插入图片描述
保存过程
第一步 redis调运fork函数,产生子进程
第二步 父进程继续处理client请求 子进程负责将内存写入到临时文件
第三步 当子进程将快照写入临时文件后,用临时文件替换原来的快照文件,子进程退出。
因为快照方式是在一定间隔时间做一次的,所以redis意外down掉的时候,就会丢失最后一次快照后的修改。所以对应用要求数据比较高的情况下不易使用快照方式.
2.Append-only file
使用aof持久化方式时,redis会将每一个收到的写命令都通过write函数追加到文件中(默认文件是appendonly.aof)。当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
我们可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时计.有三种方式(默认是每秒一次)
在这里插入图片描述
具体过程
第一步 redis调运fork函数,产生子进程
第二步 子进程根据内存中的数据库快照.往临时文件中写入重建数据库的状态的命令
第三步 父进程继续处理client请求,除了把写命令写入到原来的aof文件中,同时把收到的写命令缓存起来.
第四步 当子进程把快照内容写入已命令方式写到临时文件中后,子进程发信号通知父进程,之后父进程把缓存的写命令也写入到临时文件.
第五步 不进城可以使用临时文件替换老的aof文件并重命名,之后收到的写命令也开始往新的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、付费专栏及课程。

余额充值