Redis如何实现持久化方案(RDB和AOF使用)


一、持久化的作用

1.什么是持久化

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

2.持久化的实现方式

快照:某时某刻数据的一个完成备份    -mysql的Dump    -redis的RDB写日志:任何操作记录日志,要恢复数据,只要把日志重新走一遍即可    -mysql的 Binlog    -Hhase的 HLog    -Redis的 AOF

二、RDB

1.什么是RDB

20.png

2.触发机制-主要三种方式

第一种:s*e(同步)1 客户端输入s*e命令----》redis服务端----》同步创建RDB二进制文件2 会造成redis的阻塞(数据量非常大的时候)3 文件策略:如果老的RDB存在,会替换老的4 复杂度 o(n)第二种:bgs*e(异步,Backgroud s*ing started)1 客户端输入s*e命令----》redis服务端----》异步创建RDB二进制文件(fork函数生成一个子进程(fork会阻塞reids),执行createRDB,执行成功,返回给reids消息)2 此时访问redis,会正常响应客户端3 文件策略:跟s*e相同,如果老的RDB存在,会替换老的4 复杂度 o(n)第三种:(常用方式)(******)自动(通过配置文件)配置   seconds   changess*e   900        1s*e   300        10s*e   60         10000如果60s中改变了1w条数据,自动生成rdb如果300s中改变了10条数据,自动生成rdb如果900s中改变了1条数据,自动生成rdb

以上三条符合任意一条,就自动生成rdb,内部使用bgs*e

#配置:

s*e 900 1 #配置一条

s*e 300 10 #配置一条

s*e 60 10000 #配置一条

dbfilename dump.rdb  #rdb文件的名字,默认为dump.rdb

dir ./ #rdb文件存在当前目录

stop-writes-on-bgs*e-error yes #如果bgs*e出现错误,是否停止写入,默认为yes

rdbcompression yes #采用压缩格式

rdbchecksum yes #是否对rdb文件进行校验和检验

#最佳配置

s*e 900 1

s*e 300 10

s*e 60 10000 dbfilename dump-${port}.rdb

 #以端口号作为文件名,可能一台机器上很多reids,不会乱

dir /bigdiskpath #保存路径放到一个大硬盘位置目录

stop-writes-on-bgs*e-error yes

#出现错误停止

rdbcompression yes #压缩

rdbchecksum yes #校验

RDB触发机制一般使用第三种方式,但是这种方式也会有缺点。如果修改的条数没有在设置范围内那么就不会触发,就会引发很多数据没有持久化的情况。所以我们一般采用下面方式:AOF。

如果是保存不重要的数据可以使用RDB方式(比如缓存数据),如果是保存很重要的数据就要使用AOF,但是两种方式也可以同时使用。

三、AOF

1.RDB问题

耗时,耗性能。不可控,可能会丢失数据。

2.AOF介绍

客户端每写入一条命令,都记录一条日志,放到日志文件中,如果出现宕机,可以将数据完全恢复

3.AOF的三种策略

日志不是直接写到硬盘上,而是先放在缓冲区,缓冲区根据一些策略,写到硬盘上

Trae国内版 Trae国内版

国内首款AI原生IDE,专为中国开发者打造

Trae国内版 2045 查看详情 Trae国内版

#第一种:always:redis--》写命令刷新的缓冲区---》每条命令fsync到硬盘---》AOF文件

#第二种:everysec(默认值):redis——》写命令刷新的缓冲区---》每秒把缓冲区fsync到硬盘--》AOF文件

#第三种:no:redis——》写命令刷新的缓冲区---》操作系统决定,缓冲区fsync到硬盘--》AOF文件

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

4.AOF重写

随着命令的逐步写入,并发量的变大, AOF文件会越来越大,通过AOF重写来解决该问题

原生AOF AOF重写

set hello world

set hello j*a

set hello hehe

incr counter

ncr counter

rpush mylist a

rpush mylist b

rpush mylist c

过期数据

set hello hehe

set counter 2

rpush mylist a b c

  

本质就是把过期的,无用的,重复的,可以优化的命令,来优化这样可以减少磁盘占用量,加速恢复速度

实现方式

bgrewriteaof:客户端向服务端发送bgrewriteaof命令,服务端会起一个fork进程,完成AOF重写

AOF重写配置:

重写流程

21.png

AOF配置文件 (******)

appendonly yes #将该选项设置为yes,打开appendfilename "appendonly-${port}.aof" #文件保存的名字appendfsync everysec #采用第二种策略dir /bigdiskpath #存放的路径no-appendfsync-on-rewrite yes #在aof重写的时候,是否要做aof的append操作,因为aof重写消耗性能,磁盘消耗,正常aof写磁盘有一定的冲突,这段期间的数据,允许丢失

四、RDB和AOF的选择

1.rdb和aof的比较

命令 rdb aof
启动优先级 低   
高(挂掉重启,会加载aof的数据)   
体积 小 

恢复速度   
 快
数据安全性   
丢数据 
根据策略决定   
轻重   
重   

2.rdb最佳策略

rdb关掉,主从操作时
集中管理:按天,按小时备份数据
主从配置,从节点打开

3.aof最佳策略

开:缓存和存储,大部分情况都打开,
aof重写集中管理
everysec:通过每秒刷新的策略

4.最佳策略

小分片:每个redis的最大内存为4g
缓存或存储:根据特性,使用不通策略
时时监控硬盘,内存,负载网络等
有足够内存

以上就是Redis(四)——持久化方案(RDB和AOF使用)的全部内容。

相关参考:PHP中文网

以上就是Redis如何实现持久化方案(RDB和AOF使用)的详细内容,更多请关注其它相关文章!


# 重写  # 客户端  # 自动生成  # 服务端  # 如何实现  # 国内  # 第二种  # redis  # 游泳馆网站建设方法  # 新泰网站seo优化  # 网站内容建设情况  # 信阳新站关键词搜索排名  # 河东网站推广开发公司  # 传统推广网站的技巧方式  # 自主建设个人网站  # seo优化师陈丫头  # 跨境物流网站建设  # 桥头网站建设收费  # 三种  # 中文网  # 第三种 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: J*aScript与HTML元素交互:图片点击事件与链接处理教程  电子白板帮助菜单使用指南  MongoDB聚合管道:高效统计列表中各项的文档数量  12306售票时间最新规定 | 网上订票和车站窗口时间一样吗  创建快捷方式启动系统保护  TikTok私信无法发送表情怎么办 TikTok消息表情发送修复方法  PHP中获取HTTP响应状态消息:方法与限制  解决异步Python机器人中同步操作的阻塞问题  小米倒班助手添加日历提醒  《密马》发布账号方法  怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】  Composer如何使用composer-plugin-api开发自定义插件  如何在CSS中使用伪类:valid实现表单验证提示_结合:valid改变边框颜色  《健康大兴》注册方法介绍  鲨鱼剧场app金币获取方法  《大润发优鲜》充值方法介绍  AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案  TikTok视频播放不流畅怎么办 TikTok视频播放优化方法  C++如何实现单例模式_C++线程安全的单例模式写法  J*aScript对象中深度嵌套URL键的查找与更新策略  vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读  《下一站江湖2》独孤剑诀习得方法  SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱  德邦快递查询入口登录官网 德邦快递单号查询系统入口  小红书网页版在线直达 小红书网页版免费登录入口  苹果iPhone14ProMax如何新建AppleID_iPhone14ProMax新建AppleID具体流程  国际经济与贸易就业方向解析  《下一站江湖2》武器获取方法  如何使用 Optional 类型并满足 Pylint 的类型检查  抖音如何解除|直播|权限绑定_抖音关闭并解绑|直播|功能的方法  百度浏览器无法安装扩展程序_百度浏览器插件安装失败原因解析  Retrofit根路径POST请求:@POST("/") 的应用与解析  Yandex世界探索 最新官方免登录入口全知道  Final Cut Pro视频加EQ教程  Golang如何初始化module项目_Golang module init使用说明  研招网官方网站招生平台入口_中国研究生招生信息网官网登录  抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?  毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏  《三角洲行动》战斗步枪与机枪类改装代码分享  铁路12306座位怎么选_12306官方选座操作方法  无人机考证官网 中国民航无人机考证官网登录入口  中通快递官网指定查询 中通快递单号查询平台入口  iPhone14无法连接蓝牙设备如何解决  J*aScript类型数组_TypedArray使用  Google Drive API服务器端访问指南:服务账户认证详解  教育查询官方网站入口 教育个人档案查询免费官网  263企业邮箱如何设置邮件转发功能  热血江湖归来医师加点攻略 

 2020-05-30

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.