Redis从入门到精通5:Redis的持久化

2020-04-04  本文已影响0人  金字塔下的小蜗牛

本节来介绍Redis的持久化。

Redis支持两种方式持久化:RDB和AOF。默认开启RDB,而禁用AOF。

1.RDB快照方式

RDB方式,是一种快照,即每隔一段时间生成Redis内存的快照。启动redis后,默认会在当前工作目录下生成dump.rdb的快照文件。可以通过redis.conf的”SNAPSHOTTING”模块来设置RDB的属性。

# 设置RDB生成的策略,单位是秒(顺序从下往上)
save 900 1 # 在15分钟内如果有1个Key发生了变化就保存一下快照
save 300 10 # 在5分钟内如果有10个Key发生了变化就保存一下快照
save 60 10000 # 在1分钟内如果有10000个Key发生了变化就保存一下快照
## 如果禁用RDB时,只需要注释掉上面的三条策略即可

# 如果保存RDB文件时出错,禁止写入新的数据
stop-writes-on-bgsave-error yes

# 是否压缩RDB文件,节省空间,但是会牺牲一定的性能
rdbcompression yes

# 使用RDB文件恢复数据时,是否检查RDB文件的校验和
rdbchecksum yes

# RDB文件的名字(多个实例时需要设置成不同的名字)
dbfilename dum.rdb

# RDB文件保存的目录,默认是Redis的家目录
dir ./

2.AOF日志方式

AOF,全称是Append Only File,是一种日志方式,默认是禁用的。

开启AOF方式需要修改redis.conf配置文件中”APPEND ONLY MODE”模块的配置:

# 开启AOF日志功能
appendonly yes

# AOF日志文件的名字(多个实例需要设置不同的名字)
appendfilename "appendonly.aof"

# 记录日志的策略
# appendfsync always 每次操作都记录日志
appendfsync everysec (默认)每秒记录一次日志
# appendfsync no 不是禁用,而是由操作系统决定什么时候生成日志

# Redis进行日志重写的时候,是否继续写入日志
no-appendfsync-on-rewrite no

# 什么时候执行日志重写
auto-aof-rewrite-percentage 100 超过上次重写后大小的一倍执行重写
auto-aof-rewrite-min-size 64mb 超过64M开始执行重写

什么是日志重写

日志重写就是将一个Key的多条操作过程的结果,直接用一条赋值语句代替,删除这个Key之前的操作记录。也就是说,经过日志重写之后,将不能恢复到之前的历史值。

根据日志重写的规律可以知道,AOF文件的大小先增加,发生日志重写后变小。可以使用Redis自带的压力测试工具来观测这个现象。

bin/redis-benchmark -n 100000

在实际工作中,结合RDB和AOF。相当于Oracle数据库中的完全备份和增量备份。

上一篇下一篇

猜你喜欢

热点阅读