redis持久化策略

众所周知,redis基于内存的一个nosql,但是它也是支持持久化的,平常会备份到硬盘里,然后开机后就从硬盘里恢复到内存里,这样一来就不得不提它两个持久化策略了 

一.RDB (默认)

 1.介绍

        rdb快照是redis默认的持久化方法,它主要的流程是如果在指定时间内,redis数据改变了多少次就触发子进程去备份 则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。

        一般默认有900秒修改1次,300秒修改10次,60秒修改10000次时触发备份,需要修改时可以到redis.conf里去修改SNAPSHOTTING 对应内容

save <seconds> <changes>
# save ""
save 900 1
save 300 10
save 60 10000
#本地备份文件名字
dbfilename dump.rdb
#备份目录
dir ./
#数据压缩
rdbcompression yes

         当然除了上面的自动触发备份,还可以通过save方法来手动触发备份,所以说如果想要迁移redis数据库,在rdb快照策略中只需要复制dump.rdb文件就好了

  2.rdb的优点

        1)备份完全依靠子进程来完成,不会干扰主进程读写

        2)只需要一个备份文件,适合大规模的数据恢复(aof需要从头执行一遍)

        3)对数据完整一致性不高的rdb是个好选择

  3.rdb的缺点

        1)因为不是实时触发的,所以会出现数据丢失(比如最后一个备份前宕机了)

        2)备份时占用内存,因为备份的时候是创建一个子进程写入新的临时文件来替换掉原来的备份文件,这时候数据会是原来的两倍,所以redis备份及恢复最好选在半夜无人的时候

二.AOF

 1.介绍

        aof就是类似mysql的二进程日志,将所有的写操作写入aof日志,新的操作将追加到文件后面,redis重启会重新从头执行一遍写入及更新操作。redis.conf中配置文件有关aof的参数有

#aof开关
appendonly yes
#aof执行触发条件 always 立刻   ererysec 每秒异步  no 不同步
# appendfsync always
appendfsync everysec
# appendfsync no
#aof重写机制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
#解说:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。一般都设置为3G,64M太小了。

 2.根据AOF文件恢复数据

正常情况下,将appendonly.aof 文件拷贝到redis的安装目录的bin目录下,重启redis服务即可。但在实际开发中,可能因为某些原因导致appendonly.aof 文件格式异常,从而导致数据还原失败,可以通过命令redis-check-aof --fix appendonly.aof 进行修复 。从下面的操作演示中体会。

 3.AOF的重写机制

前面也说到了,AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多。所以聪明的 Redis 新增了重写机制。当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩。

重写的原理:Redis 会fork出一条新进程,读取内存中的数据,并重新写到一个临时文件中。并没有读取旧文件(你都那么大了,我还去读你??? o(゚Д゚)っ傻啊!)。最后替换旧的aof文件。

触发机制:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。这里的“一倍”和“64M” 可以通过配置文件修改。

 3.AOF优缺点

        优点:就是为了弥补rdb丢失数据,aof数据完整性一致高

        优点:aof文件会越来越大,数据恢复也就会越来越慢

三.总结

  1. Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
  2. RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
  3. Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
  4. AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
  5. Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
  6. 若只打算用Redis 做缓存,可以关闭持久化。
  7. 若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。

        

        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值