2. 持久化

  • redis
  • redis

一、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...