Redis的两种数据持久化模式
reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。
所以:redis是一个支持持久化的内存数据库,可以将内存中的数据同步到磁盘保证持久化。
Redis的持久化策略:2种
1.RDB:快照形式是直接把内存中的数据保存到一个dump文件中,定时保存,保存策略
2.AOF:把所有的对redis的服务器进行修改的命令都存到一个文件里,命令的集合
1.RDB(redis database)
RDB是Redis默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入次盘中,即在指定目录生成一个dump.rdb文件。Redis重启会通过加载dump.rdb文件恢复数据。
核心配置
#redis.conf
# save ""
save 900 1 # 最后检查900秒是否有1个更改有则save
save 300 10 #再检查300秒是否有10个更改有则save
save 60 10000 #先检查60秒内是否有10000个更改,有则save
dbfilename dump.rdb //本地数据库名
dir ./ //本地数据库存放目录
rdbcompression yes //开启数据压缩
rdb优点:
1 适合大规模的数据恢复。
2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。
缺点:
1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。
2 备份时占用内存
2.AOF(append only file)
默认不开启,采用日志的形式记录每个写操作,并追加到文件中,redis重启会根据日志文件内容将写指令从前到后执行一次完成数据恢复。
核心配置
#redis.conf
appendonly yes//开启aof
appendfilename"appendonly.aof"
appendfsync everysec//always,everysec,no
#always 每次数据变化立即写入磁盘
#everysec 每秒写入磁盘
#no 不同步
auto-aof-rewrite-percentage100%//与上次aof文件大小对比,超过上次100%时候,触发bgrewriteauto-aof-rewrite-min-size512M//指定触发rewrite的aof文件大小#若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite
Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
自动瘦身见核心配置,手动瘦身命令:BGREWRITEAOF。