redis是一个内存数据库,但是也有持久化的功能。redis持久化主要有两种方式,一个是数据库快照,一个aof方式。
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
- AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
- RDB方式就是快照方式:
- 配置方式如下:
- 在redis.conf文件中有如下配置:
-
# Note: you can disable saving at all commenting all the "save" lines.
- 900s内有1个key更新就执行一次快照
-
save 900 1
- 300s内有10个key更新就执行一次快照
-
save 300 10
- 60s内有10000个key更新就执行一次快照
-
save 60 10000
- 这样数据库就会按照策略进行快照备份,rdb的方式的优点是特别好恢复数据且能保证redis的高性能运行。但是有备份间隙,容易丢数据。
- aof就是记录操作日志的方式:
- 具体配置如下:
- 在redis.conf文件中有如下配置:
-
# log file in background when it gets too b
-
appendonly yes #设置成yes即开启了aof方式。
- aof还有如下配置:
-
#每一个写命令都会存入到aof文件中,最能保证数据的安全,但是效率较低 # appendfsync always
-
#每一秒都会记录一下写命令,效率和安全做了较好的折中 appendfsync everysec
-
#完全交给操作系统,不靠谱 # appendfsync no