redis持久化

该笔记来自 《redis开发与运维》(付磊)

1 rdb 
    描述:当前进程数据快照保存

    触发方式:手动、自动
    
        手动触发对应命令:save bgsave
    
            save: 阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,

                        线上环境不建议使用,该命令已经废弃
        
            bgsave:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。

                           阻塞只发生在fork阶段,一般时间很短
        
        自动触发RDB
        
            第一种:使用save相关配置,如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave

            第二种:如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点
            
            第三种:执行debug reload命令重新加载Redis时,也会自动触发save操作
            
            第四种:默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave
            
            
    RDB文件的处理

        保存:RDB文件保存在dir配置指定的目录下,文件名通过dbfilename配置指定。可以通过执行
        config set dir{newDir}和config setdbfilename{newFileName}
        运行期动态执行,当下次运行时RDB文件会保存到新目录
            
    
    RDB的优缺点
        
        优点:
            第一:RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据
                  快照。非常适用于备份,全量复制等场景。比如每6小时执行bgsave备份,
                  并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复
            
            第二:Redis加载RDB恢复数据远远快于AOF的方式
            
            
        缺点:
            第一:RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运
                  行都要执行fork操作创建子进程,属于重量级操作,频繁执行成本过高
            
            第二:存在老版本Redis服务无法兼容新版RDB格式的问题
                
                
                
2、AOF

    描述:以独立日志的方式记录每次写命令,
          重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用
          是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式

    使用配置
    
        appendonly yes,默认不开启


        appendfilename:文件名

        dir:指定保存路径
        
    AOP缓冲策略
        
        always:    每次写入都要同步AOF文件,性能低,不建议配置
        
        everySec:默认配置,建议策略,兼顾性能和稳定性;
        
        no:由操作系统来将数据同步到硬盘,有效率但是不保证安全性。
    
    重写机制
    
        描述:Redis引入AOF重写机制压缩文件体积。AOF文件重写是把Redis进程内的数据转
                  化为写命令同步到新AOF文件的过程
                
                
        为啥aof文件体积可以变小:
        
            第一:过时数据不再存入文件;
            
            第二:旧的AOF文件含有无效命令,如del key1、hdel key2、srem keys、set
                      a111、set a222等。重写使用进程内数据直接生成
                
            第三:多条写命令可以合并为一个,如:lpush list a、lpush list b、lpush list
                     c可以转化为:lpush list a b c。为了防止单条命令过大造成客户端缓冲区溢
                     出,对于list、set、hash、zset等类型操作,以64个元素为界拆分为多条
                
                
    触发机制
    
        手动触发:直接调用bgrewriteaof命令
                
        自动触发:根据auto-aof-rewrite-min-size和auto-aof-rewrite-percentage参
                           数确定自动触发时机
                
                         auto-aof-rewrite-min-size:表示运行AOF重写时文件最小体积,默认为64MB
                
                         auto-aof-rewrite-percentage:代表当前AOF文件空间(aof_current_size)和
                                                                        上一次重写后AOF文件空间(aof_base_size)的比值
                
                
3、重启加载

    第一:AOF持久化开启且存在AOF文件时,优先加载AOF文件
    
    第二:AOF关闭或者AOF文件不存在时,加载RDB文件
    
    第三:加载AOF/RDB文件成功后,Redis启动成功
                
    第四:AOF/RDB文件存在错误时,Redis启动失败并打印错误信息        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值