内存型数据库也能做到持久性, 来看看 redis 的持久性

持久化定义**

将数据从掉电易失的内存放到永久存储的设备上

为什么需要持久化

因为所有的数据都在内存上,所以必须得持久化
  1. RDB模式(默认开启)
    1、保存真实的数据
    2、将服务器包含的所有数据库数据以二进制文件的形式保存到硬盘里面
    3、默认文件名 :/var/lib/redis/dump.rdb
    
    • RDB 的缺点

      1、创建RDB文件需要将服务器所有的数据库的数据都保存起来,这是一个非常消耗资源和时间的操作,所以服务器需要隔一段时间才创建一个新的RDB文件,也就是说,创建RDB文件不能执行的过于频繁,否则会严重影响服务器的性能
      2、可能丢失数据
      
  2. AOF(AppendOnlyFile)
    • AOF持久化原理及优点

      # 原理
         1、每当有修改数据库的命令被执行时, 
         2、因为AOF文件里面存储了服务器执行过的所有数据库修改的命令,所以给定一个AOF文件,服务器只要重新执行一遍AOF文件里面包含的所有命令,就可以达到还原数据库的目的
      # 优点
        用户可以根据自己的需要对AOF持久化进行调整,让Redis在遭遇意外停机时不丢失任何数据,或者只丢失一秒钟的数据,这比RDB持久化丢失的数据要少的多
      
    • AOF重写

      思考:AOF文件中是否会产生很多的冗余命令?

      为了让AOF文件的大小控制在合理范围,避免胡乱增长,redis提供了AOF重写功能,通过这个功能,服务器可以产生一个新的AOF文件
        -- 新的AOF文件记录的数据库数据和原由的AOF文件记录的数据库数据完全一样
        -- 新的AOF文件会使用尽可能少的命令来记录数据库数据,因此新的AOF文件的提及通常会小很多
        -- AOF重写期间,服务器不会被阻塞,可以正常处理客户端发送的命令请求
      
  3. RDB 和 AOF 对比
    RDB持久化AOF持久化
    全量备份,一次保存整个数据库增量备份,一次保存一个修改数据库的命令
    保存的间隔较长保存的间隔默认为一秒钟
    数据还原速度快数据还原速度一般,冗余命令多,还原速度慢
    执行SAVE命令时会阻塞服务器,但手动或者自动触发的BGSAVE不会阻塞服务器无论是平时还是进行AOF重写时,都不会阻塞服务器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值