Redis 持久化

138 阅读2分钟

Redis 的高性能是因为所有的数据都存储在内存中,但把数据存储在内存中也意味着一旦断电,所有的数据都会丢失,因此Redis 持久化非常有必要

Redis 持久化的两种方式

  • RDB 方式
  • AOF 方式

这两种方式既可以单独使用,也可以结合使用

RDB (Redis DataBase) 持久化

这种持久化方式 redis 默认支持,不需要额外配置

RDB 持久化指的是 在指定时间间隔内,将内存中的数据快照存入硬盘

优点

缺点 如果在时间间隔中内存发生断电,就会丢失 时间间隔中间存储的数据

配置

从配置文件了解RDB

cd user/local/redis
vi redis.conf
# 大约145行上下,开启了 RDB 的配置
save 900 1
# 每300秒至少有10个key发生变化,就触发持久化
save 300 10
# 每60秒至少有10000个key发生变化,就触发持久化
save 60 10000

除了上面的保存策略,配置文件还指定了本地数据库文件名

# 大约在 180 行上下
dbfilename dump.rdb

还指定了本地数据库存放目录

# 大约在 190 行上下
dir ./

开启了数据压缩

rdbcompression yes

AOF (Append Only File) 持久化

AOF 持久化指的是 通过日志的形式记录 redis 的每一步操作,在 redis 启动时会读取日志信息重新构建数据库

优点

  • 数据安全性最高,每次修改都会记录日志,不会像 RDB 那样有时间空档期
  • 采用追加方式,追加时如果出错不会影响到之前的数据

缺点

  • 每次修改前,都要记录日志,效率低
  • 持久化同样的数据,AOF需要的硬盘空间比 RDB 大

配置

cd user/local/redis
vi redis.conf
# 大约在 500 行上下
# 将 on 改为 yes 开启AOF
appendonly on
# 开启 AOF 后会产生一个文件, 默认叫 appendonly.aof
appendfilename "appendonly.aof"

同步策略

# 大约538行上下
# 每修改一次同步一次
appendfsync always
# 每秒同步一次
# appendfsync everysec
# 不同步
# appendfsync no