zoukankan      html  css  js  c++  java
  • Redis入门到精通(十一)——Redis持久化(RDB/AOF)、RDB的启动方式(save/bgsave/save配置)、RDB三种启动方式对比

    什么是持久化

    利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化

    为什么要进行持久化

    防止数据的意外丢失,确保数据安全性

    持久化过程保存什么

    1.将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据              RDB
    2.将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程    AOF

    一、RDB启动方式——save指令

    命令执行
    谁:redis操作者(用户)
    什么时间:即时(随时进行)
    干什么事:保存数据

    命令

    save     #客户端设置完key/value之后输入save保存

    作用

    手动执行一次保存一次数据

    执行持久化命令之后在日志存放地址发现dump.rab文件,执行save命令保存数据的文件,保存当前的快照信息。

    二、RDB启动方式——save指令相关配置

    在配置文件中修改以下参数

    三、数据恢复过程演示

    就是在启动的时候将数据加载过来的

    四、RDB启动方式——bgsave指令

    Redis是单线程任务执行序列,如果执行save命令时间过长会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用。

    数据量过大,单线程执行方式造成效率过低如何处理:放在后台执行

    谁执行:redis操作者(用户)发起指令;redis服务器控制指令执行
    什么时间:即时(发起);合理的时间(后台执行)
    干什么事情:保存数据

    命令

    bgsave      #后台操作
    作用:手动启动后台保存操作,但不是立即执行

    bgsave指令工作原理   (******)

    1.客户端发送bgsave指令到redis服务端
    2.系统调用fork函数,生成子进程
    3.创建rdb文件
    4.完成之后会返回redis服务端消息,告诉已经保存完毕

    操作流程可以在日志文件中查看到

    注意:bgsave命令是针对save阻塞问题做的优化。Redis内部所有涉及到RDB操作都采用bgsave的方式,save命令可以放弃使用

    使用bgsave指令相关配置
    stop-write-on-bgsave-error yes
    说明:后台存储过程中如果出现错误现象,是否停止保存操作,通常默认为开启状态

    五、RDB启动方式——自动执行save配置(后台还是使用bgsave指令)

    前面两种都是手动执行,如果忘记执行命令怎么办?不知道数据产生了多少变化,何时保存。
    自动执行
    谁:redis服务器发起指令(基于条件)
    什么时间:满足条件
    干什么事情:保存数据
    conf配置文件:  save seconds changes
    作用:满足限定时间范围内key的变化数量达到指定数量即进行持久化
    参数:
    second:监控时间范围(单位是s)
    changes:监控key的变化量
    位置:在conf配置文件中进行配置
    
    例如
    save 900 1      #900秒内监测到1个key发生变化,在规定时间内只要有这些数量的key发生变化

    注意:配置好后,后台还是使用的bgsave指令,除了查询之外,增加、修改、覆盖key值都会保存记录

    save配置原理

    注意

    1.save配置要根据实际业务情况进行设置,频率过高过低都会出现性能问题,结果可能是灾难性的。
    2.save配置中对于second和changes设置通常具有互补对应关系,尽量不要设置成包含关系
    3.save配置启动后执行的是bgsave操作

    六、RDB三种启动方式对比

    七、RDB特殊启动形式

    1.全量复制
    在主从复制中详细讲解
    2.服务器运行过程中重启
    debug reload
    3.关闭服务器时指定保存数据
    shutdown save

    八、RDB优缺点

  • 相关阅读:
    24)django-信号
    23)django-缓存
    22)django-中间件
    21)django-csrf(跨站请求伪造)
    20)django-session使用
    19)django-cookie使用
    18)django-模板的过滤器和tag,自定义simple_tag和filter
    17)django-模板的继承与导入
    document.documentElement.clientHeight 和 document.body.clientHeight
    Markdown 入门基础
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12880962.html
Copyright © 2011-2022 走看看