Redis的持久化机制
2022-08-31 本文已影响0人
右耳菌
1. 持久化介绍
Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。
2. 持久化的方式
- RDB持久化
RDB持久化方式能够在指定的时间间隔对你的数据进行快照存储
- AOF (append only file)持久化
AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据
3. RDB持久化方式
- 客户端直接通过命令BGSAVE或者SAVE来创建一个内存快照
- BGSAVE调用fork来创建一个子进程,子进程负责将快照写入磁盘,而父进程仍然继续处理命令。
- SAVE 执行SAVE命令过程中,不再响应其他命令。
- 在redis.conf中调整save配置选项,当在规定的时间内,Redis发生了写操作的个数满足条件会触发发生BGSAVE命令
#900秒之内至少一次写操作
save 900 1
# 300秒之内至少发生10次写操作
save 30010
#60秒之内发生至少10000次
save 60 10000
注意以上的内容中,比如 save 3 2
表示三秒内如果有两次操作则进行保存,但是实际的情况是,如果第1秒内进行了一次操作,然后这期间的3秒内没有进行操作,这时候没有进行保存,但是如果后续第5秒时又执行了一次操作,此时是会进行保存的,也就是说会每个周期内的操作次数其实是会累计下来的,直到触发了保存之后才会清空置0。所以相对于说save 3 2
表示3秒内如果有两次操作则进行保存,说成3秒进行一次检查,如果累计数值大于或等于2则进行保存,然后将累计数值置0,更为准确。
- RDB的优点和缺点
4. AOF持久化方式
- 开启AOF持久化
appendonly yes
- AOF策略调整
#每次有数据修改发生时都会写入AOF文件
appendfsync always
#每秒钟同步一次,该策略为AOF的缺省策略
appendfsync everysec
#从不同步。高效但是数据不会被持久化
appendfsync no
- AOF的优点和缺点
如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~