Redis持久化


持久化就是把内存的数据写到磁盘中去,防止服务宕机内存数据丢失。

RDB持久化

RDB是redis默认的持久化方式,按照一定的时间将内存中的数据以快照的形式保存到磁盘中,默认的文件名为dump.rdb。RDB持久化主要有三种触发方式:

save触发方式:
该命令会阻塞当前redis服务器也不能执行其他命令,直到rdb过程完成为止。(会覆盖原有的rdb文件)

bgsave触发方式:
redis进程执行fork操作创建子进程,由子进程负责RDB持久化,完成后自动结束,阻塞只发生在子进程中。

自动触发方式:

  1. 在配置文件中的save seconds changes 在seconds时间内有changes个key发生变化就执行快照
  2. dir:设置快照文件的存放路径
  3. dbfilename: 设置快照文件的文件名

RDB持久化核心配置:

vim redis.conf
dir /data/redis/6379
dbfilename dump.rdb
save 900 1 //每900秒1个更改
savee 300 10
save 60 10000

RDB持久化的优缺点:

  • 优点:
    速度快,适合用做备份,主从复制也是基于RDB持久化功能实现的
  • 缺点:
    数据丢失。快照的过程由于是在子进程中发生的,因此,在快照的过程中父进程的操作如果有数据发生修改不会反应到子进程中,修改的数据不会保存到快照里,数据有丢失的风险。

AOF持久化

AOF持久化(即Append Only File)是将redis执行的所有写操作命令记录到单独的日志文件中,当重启redis将持久化的日志中的文件进行数据恢复,如果同时启用两种持久化方式,redis则优先选择AOF恢复

rewrite机制
redis为解决每次的日志追加到文件会导致文件越来越大的一种机制。redis中的数据是一定量的,不会一直无限增长而导致aof无限增长,内存大小是一定的,到一定时候,redis会利用缓存淘汰算法自动清除一部分数据,aof会做rewrite操作来重构一个更小的aof文件,此时旧的文件将被删除。AOF也有三种触发方式:

appendfsync always #每次有数据修改发生时都会写入AOF文件。性能较差但数据完整性好
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。

AOF持久化配置:

appendonly yes
appendfsync always
appendfsync everysec
appendfsync no
appendfilename “appendonly.aof”

AOF持久化优缺点:

  • 优点:
    默认每秒去备份数据,安全性高,数据损失小
  • 缺点:
    消耗比RDB高的性能去备份,使得redis性能降低;占用空间大,恢复速度慢。

小结:
如果没达到save条件、执行shutdown命令(先bgsave后shutdown),数据存在;
同时启用两种持久化AOF优先级比RDB高
重新对一个设置了键过期的key set一个新的value那么该key永不过期

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

余额充值