博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis运维和开发学习笔记(2) redis持久化
阅读量:2489 次
发布时间:2019-05-11

本文共 2072 字,大约阅读时间需要 6 分钟。

Redis运维和开发学习笔记(2) redis持久化

文章目录

持久化

  • redis将所有数据保存在内存中,对数据的更新异步地保存在磁盘上

    • 快照
      • MySQL Dump
      • Redis RDB
    • 写日志
      • MySQL Binlog
      • Hbase HLog
      • Redis AOF
  • RDB存在的问题

    • 耗时,耗性能
    • 丢失数据

持久化方式一:RDB

RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。

调用forks 生成一个子进程 子进程复制数据集到一个临时的rdb文件中 当子进程完成对数据集的复制后,redis会用新的rdb文件,并删除旧得rdb文件

触发的三种方式

1. save命令

  • 过程
    client->redis->创建RDB文件(二进制)
redis> saveok

2. bgsave

  • 过程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qEl1FSOy-1572053410723)(media/15637201103316/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202019-07-21%2022.56.06.png)]

  • 两者对比

    save与sbgsave

    | 命令 | save | bgsave |

| — | — | — |

| IO类型 | 同步 | 异步 |
| 阻塞? | 是 | 是(阻塞发生在fork) |
| 复杂度 | O(n) | O(n) |
| 优点 | 不消耗额外的内存 | 不阻塞客户端命令 |
| 缺点 | 阻塞客户端命令 | fork消耗内存 |

配置

save 900 1

save 300 10
save 60 10000
dbfilename dump.rdb
dir ./ (设置路径)
stop-writes-on-bgsave-error yes(如果bgsave发生错误就停止写入)
rdbcompression yes(采用压缩格式)
rdbchecksum yes(采用校验和)

触发机制

  1. 全量复制(主会自动生成rdb文件)
  2. debug reload 不讲内存清空的重启,触发rdb文件生成
  3. shutdown触发rdb生成

RDB 总结

  1. RDB是 Redisp内存到硬盘的快照,用于持久化
  2. save通常会阻 ARedis塞
  3. bgsaveTZRedis,但是会fork新进程
  4. save自动配置满足任一就会被执行。
  5. 有些触发机制不容忽视

持久化方式二:AOF

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tz5XGcNh-1572053410724)(media/15637201103316/%E5%9B%BE%E7%89%87%201.png)]

| 时间戳 | save |

| — | — |
| T1 | 执行多条命令 |
| T2 | 满足RDB条件自动创建 |
| T3 | 再次执行多条写命令 |
| T4 | 宕机 |
| | 数据丢失 |

写一条命令,就在AOF增加一条命令。当redis宕机,就是用AOF对数据进行完整恢复。

AOF的三种策略

  • always
    redis执行写命令,是将命令卸载缓冲区,每条命令fsycn到硬盘。
  • everysec
    redis执行写命令,是将命令卸载缓冲区,每秒把命令fsycn到硬盘。
  • no
    redis执行写命令,是将命令卸载缓冲区,由操作系统判断把命令fsycn到硬盘。

三种策略的优缺点

命令 always everysec no
优点 不丢失数据 每秒一次Sync丢1秒数据 不用管
缺点 1O开销较大,一般的sata盘只有几百TPS 丢1秒数据 不可控

AOF重写机制

原生AOF AOF 重写
set hello world set hello hehe
set hello jave
set hello hehe

减少磁盘占用量,加快恢复速度

  • 两种方式

    bgrewriteaof(fork子进程,完成重写)
    AOF重写配置

  • 配置

    | 配置名 | 含义 |

    | — | — |
    | Auto-aof-rewrite-min-size | AOF文件重写需要的尺寸 |
    | Auto-aof-rewrite-percentage | AOF增长率 |

  • 统计

    | 统计名 | 含义 |

    | — | — |
    | aof_current_size | AOF 当前尺寸 |
    | aof_base_size | AOF上次启动和重写的尺寸 |

  • 自动触发机制

    aof_current_size > Auto-aof-rewrite-min-size
    (aof_current_size - aof_base_size)/aof_base_size > Auto-aof-rewrite-percentage

  • AOF重写流程

转载地址:http://vzorb.baihongyu.com/

你可能感兴趣的文章
poj 1328贪心
查看>>
apk瘦身
查看>>
《大话设计模式》--模板模式
查看>>
JAVA中通过时间格式来生成唯一的文件名
查看>>
测试工作中常用的方法
查看>>
工欲善其事必先利其器系列之:在VS里面折叠js代码
查看>>
idea使用教程
查看>>
Android 绑定远程服务出现 Not Allowed to bind service
查看>>
链表基本操作
查看>>
在Jenkins上配置批处理删除远程共享目录7天以上的文件
查看>>
代理模式详解(静态代理和动态代理的区别以及联系)
查看>>
06jQuery-04-DOM操作
查看>>
[10] AOP的注解配置
查看>>
MongoDB 3.X 用户权限控制
查看>>
python numpy中sum()时出现负值
查看>>
Android JNI和NDK学习(5)--JNI分析API
查看>>
2017-05-12-Linux文件操作
查看>>
运算放大器单电源应用中的使用齐纳二极管偏置方法
查看>>
【模板】并查集
查看>>
[Vue]组件——通过$emit为组件自定义事件
查看>>