🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
Redis的持久化机制
RDB: Redis DataBase
-
什么是RDB
RDB∶每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。 -
备份与恢复
内存备份–>磁盘临时文件
临时文件–>恢复到内存 -
RDB优劣势
- 优势
- 每隔一段时间备份,全量备份
- 灾备简单,可以远程传输
- 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的的完整性
- 相对AOF来说,当有更大文件的时候可以快速重启恢复
- 劣势
- 发生故障时,有可能会丢失最后一次的备份数据
- 子进程所占用的内存比会和父进程一模一样,这会造成CPU负担
- 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。
- 优势
-
RDB的配置
- 保存位置,可以在redis.conf自定义∶
/user/local/redis/working/dump.rdb
- 保存机制∶
- 保存位置,可以在redis.conf自定义∶
save 900 1 # 如果1个缓存更新,则15分钟后备份
save 300 10 # 如果10个缓存更新,则5分钟后备份
save 60 10000 # 如果10000个缓存更新,则1分钟后备份
- stop-writes-on-bgsave-error
- yes∶如果save过程出错,则停止写操作
- no∶ 可能造成数据不一致
- rdbcompression
- yes∶开启rdb压缩模式
- no∶关闭,会节约cpu损耗,但是文件会大,道理同nginx
- rdbchecksum
- yes∶使用CRC64算法校验对rdb进行数据校验,有10%性能损耗
- no∶不校验
总结
RDB适合大量数据的恢复,但是数据的完整性和一致性可能会不足
AOF: Append Only File
RDB会丢失最后一次备份的rdb文件,但是其实也无所谓,其实也可以忽略不计,毕竟是缓存,丢了就丢了,但是如果追求数据的完整性,那就的考虑使用AOF了。
AOF特点
- 以日志的形式来记录用户请求的写操作。读操作不会记录,因为写操作才会存存储。
- 文件以追加的形式而不是修改的形式。
- redis的aof恢复其实就是把追加的文件从开始到结尾读取执行写操作。
优势
- AOF更加耐用,可以以秒级别为单位备份,如果发生问题,也只会丢失最后一