2. 持久化
一、redis为什么需要持久化
redis是内存数据库,但是为了避免宕机后数据丢失,他需要将数据持久化到硬盘上用于数据恢复。redis持久化技术有两个: AOF、RDB
二、AOF
类似于mysql redolog的机制,记录的是(写)操作日志。
在Redis执行一条写操作命令后,会把该命令以追加的方式写入到一个文件里。当Redis重启的时候,先去读取这个文件里的命令,并且执行它。这就是 AOF(Append Only File)
2.1 开启AOF
# redis.conf
# 开启AOF持久化
appendonly no
# AOF持久化的文件名
appendfilename "appendonly.aof"
# 同步策略
# appendfsync always
# appendfsync no
appendfsync everysec
- appendfsync:
- always: redis每次执行完写命令后,就将缓冲区的AOF日志写到硬盘
- no: 写入到内核缓冲区,让内核决定什么时候讲AOF日志写到磁盘
- everysec: 每秒将缓冲区的AOF日志写到硬盘
三、RDB
RDB记录的是二进制数据,是redis在某一瞬间的全量快照。
生成rdb文件的命令:
- save: 生成rdb文件,由redis操作命令的线程执行
- bgsave: 新启动一个子进程去生成rdb文件
3.1 开启RDB
每隔一段时间自动执行一次 bgsave 命令:
# redis.conf
# 周期性执行条件的设置格式为
# save <seconds> <changes>
# 默认的设置为:
save 900 1
save 300 10
save 60 10000
# rdb文件压缩
rdbcompression yes
Loading...