
深入探索Redis持久化原理
redis是一个内存数据库,为了保证数据的持久化,redis提供了两种持久化方式rdb和aof,

redis是一个内存数据库,为了保证数据的持久化,redis提供了两种持久化方式rdb和aof,下面我们就分别来看下这两种持久化方式的实现原理。
RDB是通过快照方式完成的,当满足一定条件时,redis会自动将内存中的数据持久化到磁盘。
执行主从复制操作(第一次)
(免费学习视频教程推荐:mysql视频教程)

###快照设置规则 s*e {多少秒内} {数据变化了多少}
例如:s*e 100 1:在100秒内,至少有一个键被修改就进行快照;s*e 200 4:在200秒内,至少4个键被修改就进行快照。
默认情况下,redis是没有开启AOF(append only file)的。在开始AOF之后,redis每接收到一条更改redis数据的命令,就会将该命令写入硬盘中的AOF文件。很明显,该过程会降低redis的性能,但大部分情况下是能够接受的,同时,使用性能较好的硬盘可以提高AOF性能
# 开启appendonly参数appendonly true# 设置AOF文件位置dir ./# 设置AOF文件名称,默认是appendonly.aofappendfilename appendonly.aof<br/>

Redis客户端使用RESP协议与Redis服务端进行通信,该协议是专门为redis设计的,但是也可以用于其他C-S项目。
redis通过将所有的写入命令记录到AOF文件中,来持久化数据。而将命令记录到AOF文件的过程,可以分成三个阶段:
redis将执行完的命令,命令参数,命令参数格个数等内容发送到AOF程序。当redis客户端执行命令的时候,通过连接,将协议文本发送到redis,redis接收到协议文本之后,根据内容,选择适当的命令函数,将协议文本转换成Redis字符串对象,在命令函数执行完成后,将命令参数发送到AOF程序。
Trae国内版
国内首款AI原生IDE,专为中国开发者打造
2045
查看详情
AOF程序接收到命令参数之后,会将其从字符串对象转换成协议内容,再将协议内容追加到AOF缓存中。AOF缓存是在redisServer结构的aof_buf中,新的内容会被追加到aof_buf末尾。aof_buf保持着所有未被写入到AOF文件的协议文本。
将AOF缓存内容写入到AOF文件,并保持到磁盘。 当服务器的常规函数被执行,或者事件处理器被执行的时候,flushAppendOnlyFile函数将会被执行。会有以下两个过程。
AOF一共有三种保存模式
Redis可以在AOF文件过大的时候,在后台(子进程)对AOF文件进行重写。重写之后的新文件,包含恢复当前数据集所需的最小命令集合。重写,并不会对AOF文件进行读取和写入,针对的是数据库中的当前键。
优化前set s1 1set s1 2set s1 3优化后set s1 3<br/>
AOF的重写是通过子进程实现的,因此,主线程是继续工作的,有可能对新的数据进行修改,有可能会导致数据库的数据和重写之后的数据不一致。redis通过增加一个AOF重写缓存来解决这个问题,当fork出子进程之后,新的命令不仅会追加到现有的AOF文件中,还会添加一份数据到这个缓存当中。

Redis创建新的AOF文件之后,会继续将命令添加到原有的AOF文件中,即使数据库突然宕机了,原有的AOF文件和文件内容也不会有损失。而当新的AOF文件创建完毕之后,会直接把旧的替换掉,往新的AOF文件中添加命令。
当子进程在进行重写时,主进程会完成下列工作
这样程序就完成了新旧AOF文件的替换工作。而当处理完成之后,主进程就会继续接受请求。整个重写过程中只有最后的缓存写入和改名替换的操作会导致主进程阻塞,其他时候不会影响redis的正常工作,把AOF重写对redis的性能影响降到最低。
优化触发条件
#当前的AOF文件超过上次重写时AOF文件大小百分几的时候进行重写,如果没有重写过,则以启动时AOF文件的大小为准auto-aof-rewrite-percentage 100#限制允许重写的最小的AOF文件,也就是文件小于这个值的时候不需要进行重写优化auto-aof-rewrite-min-size 64mb<br/>
本文转载自:https://database.51cto.com/art/202502/610825.htm
更多redis知识请关注redis数据库教程栏目。
以上就是探索Redis持久化原理的详细内容,更多请关注其它相关文章!
# 三种
# 闽清网站建设公司
# 一站式全域营销推广方案
# seo 什么是自然搜索
# 淘宝站外推广网站怎么样
# ocpx怎么查看关键词排名
# 虎丘网站建设解决方案
# 上海浦东seo网站优化怎么代理
# 酒店网站图片优化
# 自贡个性化网站建设平台
# 瀑布流式电商 seo
# 发送到
# Redis
# 会对
# 两种
# 就会
# 情况下
# 是一个
# 国内
# 过程中
# 重写
# AOF
# RDB
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
我的世界游戏平台入口 我的世界官方官网直达链接
C++ bind函数使用教程_C++参数绑定与函数适配器的应用
雨课堂官网在线登录 网页版雨课堂登录链接
京东快递包裹信息查询入口 京东快递官方查询平台入口
风车动漫官网首页入口登录 风车动漫在线观看正版地址
德邦快递收费标准详解
VS Code源代码管理(SCM)视图的进阶使用技巧
XPath动态元素定位:如何精准选择文本内容变化的元素
抖音网页版官方链接 抖音网页版官网链接入口
cad怎么隐藏指定的图层_cad隐藏或冻结图层方法
126手机126邮箱登录_126邮箱手机登录入口官网
冬季去哪个城市旅游更有可能观测到极光
Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧
《华夏千秋》龙女试炼功法获取方法
B站怎么开|直播| B站|直播|申请需要什么条件【新手必看】
鸿蒙单条备忘录如何加密
使用AI在VS Code中将代码从一种语言翻译成另一种
《洛克王国:世界》国家队搭配攻略
Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】
QQ邮箱注册地址 免费获取QQ邮箱账号
漫蛙官网(首页入口)_漫蛙漫画稳定访问教程分享
如何在CSS中使用伪类选择器_hover实现悬停效果
优化Google Charts Gauge:在数据库无数据时显示默认值
c++如何使用std::thread::join和detach_c++线程生命周期管理
发博客与长微博技巧
Animex动漫社社登录官网 Animex动漫社资源社入口直达
外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!
《兴业银行》注册登录方法
《火花chat》搜索好友方法
wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式
C++怎么实现一个红黑树_C++高级数据结构与平衡二叉搜索树
解决Pandas DataFrame高度碎片化警告:高效创建多列的策略
《我的恋爱逃生攻略》中文名字输入方法
折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点
win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】
如何外贸网站设计-能留住客户提升用户体验!
如何在mysql中比较InnoDB和MyISAM区别
《红果免费短剧》下载观看方法
iCloud官方网站 iCloud网页版在线登录入口
yy漫画官方网站登录入口_yy漫画在线阅读页面地址
哔哩哔哩黑名单怎么查看
谷歌浏览器官方镜像获取方法_谷歌浏览器网页版入口极速直达
三星M34录音变声问题_Samsung M34麦克风调整
解决CSS布局中意外顶部空白问题的教程
sublime如何处理超大文件不卡顿 _sublime打开大日志文件技巧
消除网页顶部意外空白线:CSS布局常见问题与解决方案
电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】
WooCommerce 新客户订单自动添加管理员备注教程
Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】
163邮箱在线登录 163邮箱网页版在线入口
2020-02-22
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。