一、前言
基于Redis的非关系数据库有RDB和AOF两种不同数据存储方式,RDB是基于将数据每隔一段时间快照的方式记录到dump.rdb二进制文件中,AOF是将每次写操作已日志的方式记录到appendonly.aof文件中,默认是RDB方式,redis.conf具体默认配置如下所示
daemonize no@b@@b@pidfile /var/run/redis.pid@b@@b@port 6379@b@@b@timeout 0@b@@b@loglevel verbose@b@@b@logfile stdout@b@@b@databases 16@b@@b@save 900 1@b@save 300 10@b@save 60 10000@b@@b@rdbcompression yes@b@@b@# 默认配置文件名称dump.rdb@b@dbfilename dump.rdb@b@@b@dir ./@b@@b@slave-serve-stale-data yes@b@@b@#默认AOF持久化关闭@b@appendonly no@b@@b@# The name of the append only file (default: "appendonly.aof")@b@appendfilename appendonly.aof@b@@b@#appendfsync always@b@appendfsync everysec@b@# appendfsync no@b@@b@no-appendfsync-on-rewrite no@b@@b@auto-aof-rewrite-percentage 100@b@auto-aof-rewrite-min-size 64mb@b@@b@slowlog-log-slower-than 10000@b@@b@slowlog-max-len 1024@b@@b@vm-enabled no@b@# vm-enabled yes@b@@b@vm-swap-file /tmp/redis.swap@b@@b@vm-max-memory 0@b@@b@vm-page-size 32@b@@b@vm-pages 134217728@b@@b@vm-max-threads 4@b@@b@hash-max-zipmap-entries 512@b@hash-max-zipmap-value 64@b@@b@list-max-ziplist-entries 512@b@list-max-ziplist-value 64@b@@b@set-max-intset-entries 512@b@@b@zset-max-ziplist-entries 128@b@zset-max-ziplist-value 64@b@@b@activerehashing yes
二、相关配置具体说明
1.RDB方式(默认,二进制文件持久化,文件大小小) - 指定的时间定时持久化数据到dump.rdb二进制文件(快照方式)
save 900 1 # 15分钟变更一次@b@save 300 10 # 5分钟变更10次@b@save 60 10000 # 1分钟变更1万次@b@@b@# 默认配置文件名称dump.rdb@b@dbfilename dump.rdb
2.AOF方式 (日志追加方式持久化,文件大)- 可以通过三种不同的方式进行追加,默认appendfsync no,需要设置为yes
appendfsync yes@b@@b@#appendfsync always (同步持久化,每次发生数据变更会被立即记录到磁盘,性能差但数据完整性比较好)@b@@b@appendfsync everysec (异步操作,每秒记录,如果一秒钟内宕机,有数据丢失)@b@@b@#appendfsync no (不同步)
3.缓存方式(无持久化) - 在默认配置为RDB的情况下(appendonly为no),注释掉save配置项,改为save ""
#save 900 1@b@#save 300 10@b@#save 60 10000@b@@b@save ""
三、使用场景对比
RDB应用场景:相同存储数据内容,AOF方式远大于RDB方式,因此启动加载恢复速度慢于RDB,所以需要快速启动执行选择且空间有要求的情况下选择RDB方式,或者是备份情况下
AOF应用场景:分布式集群cluster,数据库文件可读性等要去场合
缓存方式(无持久化):缓存数据,性能优化