zoukankan      html  css  js  c++  java
  • Redis之持久化

    Redis持久化

    大白话定义

      时间间隔内将内存中的数据写入磁盘

    Snapshot快照

      它恢复时候是将快照文件直接读到内存中

    fork

      简单的说就是备份(复制一个与当前进程一样的进程)Redis本身是单进程单线程底层用的epoll模型,所以快

    两种模式

    RDB Redis DataBase

    优势:

      适合大规模的数据恢复

      对数据完整性和一致性要求不高

    缺点:

      最后一次持久化后的数据可能会丢失

      还有就是fork备份一份,要考虑内存空间

    RDB保存文件是保存在dump.rdb文件中 这些都可以在配置文件修改但是业界都是用的这个文件名字

    动态停止RDB:  

    1 redis-cli config set save ""  当然最好还是备份一份

    需求:比如现在设置的是2分钟修改10次就触发RDB模式但是我又不想等它两分钟,写了马上存的话

    1 save 只管保存 全部阻塞
    2 bgsave 后台异步进行快照保存

    如果在此时执行flushall命令,dump.rdb文件为空,无意义

    恢复数据:

      把dump.rdb移动到redis安装目录并启动就能恢复(最好不要在宿主机上操作这些,在备份机上搞这些操作)

    异常修复启动

    redis-check-dump --fix dump.rdb

    出厂默认设置  

      1分钟内改了1万次
      5分钟改了10次
      15分钟内改了1次

    AOF Append Only File

    机制

      以日志的形式来记录每个写操作,写操作指令全部记录下来

      如果AOF与RDB共存的时候优先读取appendonly.aof,如果appendonly.aof有错误的写命令被保存进去,redis再从新启动就启动不了,但是可以通过redis-check-aof --fix appendonly.aof命令启动 自动就会把里边的错误命令删除再启动

    Rewirte

      文件追加方式,文件会越来越大,为了避免这种情况,新增重写机制

    重写原理

      简单的说又要fork

    触发重写机制

      默认是aof文件大小是上次rewirte后大小的一倍且文件大于64M时候就触发

    优势:

      每秒同步 每秒修改不同步

    劣势:

      aof文件大小远大于rdb,恢复没得rdb快

      运行效率慢与rdb,大量的io操作,占内存,逐条文件中执行命令

    常用的两个命令进程信息:

      lsof -i :6379
      ps -ef|grep redis

  • 相关阅读:
    git 常用命令
    PHP打印日志类
    如何从总账获取分类账信息
    AP -> GL 数据流动
    JDeveloper 速度慢问题
    JDeveloper 滚轮不受控制
    MyBatis 环境搭建
    初识 MyBatis
    Linux 中设置 MySQL 字符集为 UTF-8
    Linux 安装 MySQL 详解(rpm 包)
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11456042.html
Copyright © 2011-2022 走看看