redis的RDB,AOF原理以及使用

Redis对内存中的数据进行持久化,有2种方式,RDB和aof。

Redis对客户端响应请求的工作模型是单进程和单线程的.
RDB机制最主要的就是rdbSave和rdbLoad函数,前者将redis内存中数据加载到磁盘上,后者将在Redis重启时将数据恢复到redis内存中,rdbSave会阻塞主进程。所以redis使用RDB的方式持久化时,会新开一个进程。

RBD的优势:
RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是 fork 出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘操作。
启用方式:

   save 900 1     #900秒内如果超过1个key被修改,则发起快照保存
   save 300 10    #300秒内容如超过10个key被修改,则发起快照保存

缺点:
可能会丢失数据,因为rdb会把整个缓存中的数组都快照到磁盘中,那么在数据量很大时,速度就会比较慢,而且很吃资源,可能导致主进程假死。


AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到AOF文件,以此达到记录数据库状态的目的。
使用方式:

appendonly yes  #启用aof持久化
appendfsync everysec     #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中

在不断的 向aof文件中追加write命令的过程中,文件可能越来越大,为了压缩aof的持久化文件,redis提供了bgrewriteaof命令,将内存中的数据 以命令的方式保存到临时文件中,最后替换原来的文件。

优点:
能够记录所有写操作,不会造成数据丢失

缺点:

1.虽然有aof重写机制,单aof文件通常比rdb文件大
2.在不同的fsync策略写,redis性能会受到一定影响

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值