美文网首页
redis 数据持久化

redis 数据持久化

作者: 好好学习天天输出 | 来源:发表于2020-12-04 18:37 被阅读0次

1. RDB

全量

fork

redis.conf

//default configuration
save 900 1
save 300 10
save 60 10000

command

> SAVE
> BGSAVE 
  1. BGSAVE 命令
  2. rdbSaveBackground()
  3. redisFork()创建子进程
  4. fork()生成父子进程

fork()返回
返回0,当前是子进程。
返回-1,当前是父进程,子进程失败。
返回其他,当前是父进程。

fork()特性
子进程获得和父进程相同的内存空间(代码段、数据段)。
父子进程都会执行fork()后的代码。
创建子进程不会立刻大量内存拷贝。内存被修改时以页为单位拷贝,再次避免大量内存拷贝。(写时拷贝,copy on write)

copy on write

  • 解释

fork后,子进程地址空间指向父进程,父进程使用原来的物理内存空间。
子进程对内存空间有写入操作时,给子进程分配物理空间。

  • 原理
  1. fork()后,kernel设置父进程所有内存页权限设置为read-only,子进程地址空间指向父进程。
  2. 父子进程都读内存时,没有影响。
  3. 其中一个进程写内存时,CPU硬件检测到内存页是read-only,触发页异常中断(page-fault),陷入kernel中断例程。
  4. 中断例程中,kernel 把触发异常的页复制一份。

2. AOF:增量

增量

redis.conf

// default
appendonly no 
appendfilename "appendonly.aof"

# appendfsync always
appendfsync everysec
# appendfsync no

AOF重写

记录修改指令。
校验 > 存储 > 执行

  • AOF重写(瘦身)

BGREWRITEAOF指令
根据原来的AOF文件结果序列化新的AOF文件
对过程中新的指令追加到新AOF文件
替换旧AOF文件

fsync

强制把page-cache强制sync到磁盘。
进一步降低数据丢失情况。
阻塞,主进程负责。

3. 其他

redis-4.0开始启用混合持久化和重放

相关文章

  • Redis-2 数据持久化及持久化配置

    一、数据持久化 开启持久化功能后,重启redis,数据会自动通过持久化文件恢复!! 1、redis持久化 – 两种...

  • redis与memcache区别

    1、持久化 redis是支持持久化存储,宕机重启数据不会丢失,memcache重启后数据丢失 redis持久化的方...

  • 关于redis的几件小事(六)redis的持久化

    1.redis持久化的意义 redis持久化的意义,在于 故障恢复 。如果没有对数据进行持久化,那么如果redis...

  • Redis常见面试题

    Redis常见面试题 Redis持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同...

  • Redis持久化

    Redis持久化 为什么要持久化 Redis是内存数据库,宕机后数据会消失。 Redis重启后快速恢复数据,要提供...

  • redis笔记(四)redis持久化

    redis持久化 Redis持久化机制:redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中...

  • 基于Redis5.0.2的总结随笔

    Redis支持数据持久化,众多数据结构存储,master-slave模式数据备份等多种功能。 Redis持久化 持...

  • Redis与Memcached区别

    Redis优势 redis具有持久化机制,定期将内存中的数据持久化到硬盘。 redis具备binlog功能,所有操...

  • redis 学习(16)-- redis 持久化

    redis 持久化 什么是持久化 redis 将所有数据保持在内存中,对数据的更新将异步地保存在磁盘中 持久化的方...

  • redis缓存失效解决方案

    redis 持久化机制 Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需...

网友评论

      本文标题:redis 数据持久化

      本文链接:https://www.haomeiwen.com/subject/uamiwktx.html