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