redis 持久化数据保存RDB&AOF
redis 数据的查询都是基于内存hash处理,但是为了防止断电榻机等问题造成数据的丢失,redis 采用持久化硬盘方式以应对数据丢失故障。
先看下redis 目录操作命令:
redis/bin 目录下有
1. redis-benchmark 为redis 性能基准测试
2. redis-check-aof 为aof 文件恢复出现异常的修复
3. redis-check-dump 为rdb 文件恢复出现异常的修复
4. redis-cli 为redis客户端操作
5. redis-server 为redis 服务端启动程序
1. redis 持久化有两种方案可供选择RDB (redis data base ) 和 aof (append only file )
rdb 详解:
1)RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。
2)redis.conf 配置茹下
如果需要自定义快照rdb 的持久化方式,可以取消注释 save "",加入新的快照策略
3)默认redis 使用快照的方式持久化内存数据至硬盘;
save 900 1 900秒内有一个以上的key 写操作会另起一个线程进行快照的备份
4) redis.conf dir ./ 设置数据存放目录
5) rdbcompression yes 默认使用rdb 的压缩方式压缩文件。
rdb 是redis 快速块照内存信息至硬盘持久化;但持久的方式
aof 详解:
1) aof 不是redis 默认开起的持久化方式。aof 的出现是弥补rdb 文件的不实时一致性。采用日志的形式来记录每个写操作,并追加到文件中
2)aof 开启方式 appendonly yes
3) 数据库文件名 appendfilename "appendonly.aof"
4)文件追加方式 # appendfsync always 同步持久化,每次发生数据变化会立刻写入到磁盘中
appendfsync everysec (默认方式)每秒异步写入磁盘
# appendfsync no 不同步
5)aof 数据恢复,默认情况下,数据都会存在bin目录下,重新启动redis 即可以恢复之前的状态,load 硬盘数据至内存中
6)aof 文件压缩配置 (redis 每次的操作都会append 至aof 文件末尾,导致文件异常庞大,此配置压缩文件,替换旧文件)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
rdb 文件和 aof 文件可在生产中同时开启,redis 数据恢复首先加载aof 文件,如果aof 文件异常,可以使用rdb 恢复。
总结
- Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
- RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
- Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
- AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
- Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
- 若只打算用Redis 做缓存,可以关闭持久化。
- 若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB