首页 > 数据库 >Redis 开发与运维--第5章 持久化

Redis 开发与运维--第5章 持久化

时间:2022-10-09 11:01:59浏览次数:52  
标签:持久 运维 -- bgsave Redis 命令 RDB save

Redis 支持 RDB 和 AOF 两种持久化机制,持久化功能有效避免因为进程退出而造成数据丢失的问题。当下次重启时候利用之前持久化的文件即可实现数据恢复。

本章内容如下:

  首先介绍 RDB、AOF 的配置和运行流程,以及控制持久化的相关命令,如 bgsave 和 bgrewriteaof

    1、对于常见持久化问题进行分析定位和优化

    2、最后结合 Redis 常见的单机多实例部署进行优化

1 RDB

  RDB 持久化是把当前进程数据生成快照保存到硬盘的过程,触发 RDB 持久化过程手动触发和自动触发。

  1.1 触发机制

    手动触发分别对应 save 和 bgsave 命令:

    1、save 命令:阻塞当前 Redis 服务器,知道 RDB 过程完成为止,对于内存比较大的实例会造成很长时间的阻塞,线上环境不建议使用。运行 save 命令对应的 Redis 日志如下:

    

 

    2、bgsave 命令:Redis 进程执行 fork 操作创建子进程,RDB 持久化过程由子进程负责,完成后自动结束。阻塞只发生在 fork 阶段,一般时间很短。运行 bgsave 命令对应的 Redis 日志如下:

    

 

    3、显然 bgsave 命令是针对 save 阻塞问题做的优化,因此 Redis 内部所有的涉及 RDB 的操作都采用 bgsave 的方式,save 命令已经放弃。 

 

标签:持久,运维,--,bgsave,Redis,命令,RDB,save
From: https://www.cnblogs.com/dogHuang/p/16744850.html

相关文章

  • TCP与UDP的联系与区别
    TCP与UDP基本区别:1、基于连接与无连接。2、TCP要求系统资源较多,UDP较少。3、UDP程序结构较简单。4、流模式(TCP)与数据报模式(UDP)。5、TCP保证数据正确性,UDP可能丢包。6、TC......
  • leetcode-647. 回文子串
    647.回文子串回文子串是指这个子串正着读反着读读得内容都一样,比如aaa,有以下回文字串a,a,a,aa,,aa,aaa,字符虽然一样但不是同一个字符仍然被看作一个子串我们可以使用双......
  • web自动化环境搭建
    1、先确认本地电脑对应浏览器版本2、下载浏览器版本对应的驱动 谷歌浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html火狐浏览器驱......
  • Lombok和MapStruct冲突
    Lombok和MapStruct冲突导致无法生成正确的class文件。lombok自动生成getset等冗余代码。MapStruct对象copy。传统的BeanUtils.copy等利用的反射原理,效率较低,MapStruct使......
  • GoPro数据集介绍
    GoPro数据集是一个用于去模糊任务的数据集。该数据集包括3,214张大小为1,280×720的模糊图像,其中2,103张是训练图像,1,111张是测试图像。该数据集由一一对应的真......
  • Docker部署
    Docker部署dockerfiledotnetpublish-cRelease#apiFROMmcr.microsoft.com/dotnet/core/aspnet:6RUNsed-i's/TLSv1.2/TLSv1/g'/etc/ssl/openssl.cnf\&&sed......
  • 封装继承多态
    封装继承多态封装封装的意义在于保护或者防止代码(数据)被我们无意中破坏。保护成员属性,不让类以外的程序直接访问和修改。隐藏方法细节。关于对象封装的原则:......
  • Windows10内置Linux子系统(WSL)映射本地盘符
    wsl2安装后可以通过网络路径访问wsl2Linux的文件,路径是:\\wsl$为了方便可以把此路径映射本地盘符打开此电脑,点击:计算机->映射网络驱动器选择一个未使用的盘符,文件夹里......
  • docker镜像加速
    docker镜像加速通常我们直接使用dockerpull下载镜像包巨慢,不能忍~可以通过设置镜像源解决更换阿里云镜像源1.申请注册一个阿里云账户地址:https://account.aliyun......
  • 数据输入
    代码案例name=input("请告诉我你是谁?")print("我知道了,你是:%s"%name)#输入数字类型num=input("请告诉我你的银行卡密码:")#数据类型转换num=int(num)p......