1、 文档介绍redis
redis做为一个内存数据库,读写快,效率高,可是也会有宕机丢失数据的风险,因而就须要持久化操数据库
Q&A: 缓存
数据量大于内存大小时应该怎么作?安全
增长内存or采用内存淘汰策略orRedis集群
服务器
持久化会辅助扩大Redis的存储空间么?
工具
不会,持久化的主要做用是数据备份,保证数据不会因进程退出而丢失优化
(在dump的基础上开始准备Restore的实现,dump操做的第一步就是将aof文件内的记录同步到redis内,故了解一下aof文件)spa
2、RDB与AOF持久化的原理操作系统
2.1 RDB日志
RDB能够认为是Snapshot文件,当恢复时,经过加载RDB文件。把数据从磁盘加载读取到Redis中。
RDB产生:(考虑快照时的操做)
RDB的加载:
Redis持久化能够禁用,此时数据仅存在于服务器的运行时间内
Redis持久化也能够共存,当同时存在的时候,Redis重启是会先加载AOF文件
2.2 AOF
AOF能够认为是日志文件,Append only File,每次对数据的变动或者操做都会先记录打AOF内,当服务启动的时候就会先读取这些文件,从新执行一遍来恢复原始数据。
AOF提供三种同步(写aof文件与操做数据的同步)的方式:
AOF文件的格式与解析:
AOF优化:(重写)
当对一个如今为0的值执行100遍“a++”操做的话,若是每一次都记录一个操做再同步,很是浪费资源与时间,而且文件也会变大,重写即将这一百条数据写成set a 100,减小文件大小,而且提升载入速率
3、RDB与AOF的优缺点
3.1 RDB
优势:
缺点:
3.2 AOF
优势:
缺点:
3、取舍
通常来讲,不考虑硬盘大小,最安全的作法是RDB与AOF同时使用,即便AOF损坏没法修复,还能够用RDB来恢复数据。
若是Redis的数据在你的服务中并非必要的数据,例如只是当简单的缓存,没有缓存也不会形成缓存雪崩。说明数据的安全可靠性并非首要考虑范围内,那么单独只使用RDB就能够了。
不推荐单独使用AOF,由于AOF对于数据的恢复载入来讲,比RDB慢。