redis持久化策略

由于redis是内存数据库,所有的数据都保存在内存中,内存当中的数据极易丢失,所以redis的持久化就显得尤为重要,在redis中提供两种持久化方式,分别为RDB和AOF,且redis默认开启的数据持久化方式为RDB方式。

RDB持久化方式:

redis会定期保存数据快照到rdb文件中,并在启动时自动加载rdb文件,恢复之前保存的数据。可以在配置文件中配置Redis进行快照保存的时机:

save [seconds] [changes]

意为在seconds秒内如果发生了changes次数据修改,则进行一次RDB快照保存。

save和bgsave会进行rdb快照,save阻塞客户请求,bgsave异步进行,fork子进程进行,采用写时复制技术,就是最严重的情况是,bgsave时内存会翻倍,所以不能将所有的内存都分配给redis。

AOF持久化方式:

采用AOF持久化方式,会把每一个写操作都记录在日志中,在redis重启时,会把AOF文件中左右的操作都执行一遍。

AOF默认时关闭的,如要开启,进行如下配置:

appendonly yes

配置AOF

appendfsync always  //总是写盘
appendfsync everysec  //每秒写盘 

appendfsync no  //操作系统自动写盘

AOF reWrite随着AOF不断的记录写操作日志,必定会出现一些无用日志,redis提供AOF reWrite功能,重写的策略是当AOF reWrite配置如下:

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

优缺点比较:

RDB更高效,容易丢失数据,AOF alway数据不会丢失,更安全,但是效率低一些,aof文件往往更大。

Redis在fork子进程时需要将内存页表拷贝到子进程(写时复制技术),以占用24GB的redis实例为例,共需要拷贝48MB的数据,,在单xeon 2.27Ghz的物理机上,这一fork操作耗时216ms。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值