RDB
RedisDataBase是一种保存redis数据库状态的方式,存储的是相对AOF更加直观的数据,
数据内容大概是:
REDIS | dbversion | databases | EOF | check_sum |
---|
↑这是最上层的文件格式,比较底层的是key_value_pairs部分↓
TYPE | key | value |
---|
TYPE对应了string、list、set、zset、hash等数据结构
AOF
AppendOnlyFile是通过保存执行命令来实现持久化功能的
可以通过设置redis.conf打开
也可通过参数appendfsync来觉得AOF的持久化粒度,从而决定效率和安全性
- 每条都存
- 每隔一秒将缓冲区的内容写到AOF文件里,假如服务器宕机,仅仅丢失1秒的数据
- 由操作系统控制将内存缓冲区的内容写入AOF文件,安全性相对较低
随着程序运行时间越来越长,AOF文件势必越来越大,导致还原时间也将会越来越长,因此为了解决膨胀问题,redis提供了重写功能,原理:将多条操作简化成一条,注意不是合并,不会去对AOF进行读取,而是之间获取服务器当前状态实现的。
后台重写
是将客户端发来的命令写到AOF缓冲区和AOF重写缓冲区中,避免数据不一致的问题。