当前位置: 首页 > news >正文

金昌八冶建设集团官方网站天津百度seo排名优化

金昌八冶建设集团官方网站,天津百度seo排名优化,苏州基础网站建设,高端网站建设优化由于redis是基于内存的数据库,一旦宕机,数据就会丢失?如何解决? 目前,Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB(Redis DataBase) 快照。 AO…

由于redis是基于内存的数据库,一旦宕机,数据就会丢失?如何解决?

目前,Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志RDB(Redis DataBase) 快照。

AOF日志
是写后日志,"写后"的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。
在这里插入图片描述
我们以 Redis 收到“set testkey testvalue”命令后记录的日志为例,看看 AOF 日志的内容。其中,“*3”表示当前命令有三个部分,每部分都是由“$+数字”开头,后面紧跟着具体的命令、键或值。这里,“数字”表示这部分中的命令、键或值一共有多少字节。例如,“$3 set”表示这部分有 3 个字节,也就是“set”命令。

在这里插入图片描述
写后日志的优势与风险
为了避免额外的检查开销,Redis 在向 AOF 里面记录日志的时候,并不会先去对这些命令进行语法检查。如果先记日志再执行命令的话,日志中就有可能记录了错误的命令,Redis 在使用日志恢复数据时,就可能会出错。而写后日志这种方式,就是先让系统执行命令,只有命令能执行成功,才会被记录到日志中,否则,系统就会直接向客户端报错。
除此之外,写后日志一个好处:它是在命令执行后才记录日志,不会阻塞当前的写操作

AOF 也有两个潜在的风险:

风险一:如果刚执行完一个命令,还没有来得及记日志就宕机了,那么这个命令和相应的数据就有丢失的风险。
如果此时 Redis 是用作缓存,还可以从后端数据库重新读入数据进行恢复。
如果 Redis 是直接用作数据库的话,此时,因为命令没有记入日志,所以就无法用日志进行恢复了。
风险二:AOF 虽然避免了对当前命令的阻塞,但可能会给下一个操作带来阻塞风险。
AOF 日志也是在主线程中执行(写回策略为 always 时),如果在把日志文件写入磁盘时,磁盘写压力大,就会导致写盘很慢,进而导致后续的操作也无法执行了。
这两个风险都是和 AOF 写回磁盘的时机相关的。这也就意味着,如果我们能够控制一个写命令执行完后 AOF 日志写回磁盘的时机,这两个风险就解除了。

写回策略
Always 同步写回:每个写命令执行完,立马同步地将日志写回磁盘;
Everysec 每秒写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘;
No 操作系统控制的写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。
在这里插入图片描述
AOF重写
AOF 是以文件的形式在记录接收到的所有写命令。随着接收的写命令越来越多,AOF 文件会越来越大。这也就意味着,我们一定要小心 AOF 文件过大带来的性能问题,主要在于以下三个方面:
一是,文件系统本身对文件大小有限制,无法保存过大的文件;
二是,如果文件太大,之后再往里面追加命令记录的话,效率也会变低
三是,如果发生宕机,AOF 中记录的命令要一个个被重新执行,用于故障恢复,如果日志文件太大,整个恢复过程就会非常缓慢,这就会影响到 Redis 的正常使用。
AOF 重写机制就是在重写时,Redis 根据数据库的现状创建一个新的 AOF 文件,也就是说,读取数据库中的所有键值对,然后对每一个键值对用一条命令记录它的写入。重写机制具有“多变一”功能。所谓的“多变一”,也就是说,旧日志文件中的多条命令,在重写后的新日志中变成了一条命令。
在这里插入图片描述

AOF 日志由主线程写回不同,重写过程是由后台子进程 bgrewriteaof 来完成的,这也是为了避免阻塞主线程,导致数据库性能下降。

我把重写的过程总结为“一个拷贝,两处日志”。
“一个拷贝”就是指,每次执行重写时,主线程 fork 出后台的 bgrewriteaof 子进程。此时,fork 会把主线程的内存拷贝一份给 bgrewriteaof 子进程,这里面就包含了数据库的最新数据。然后,bgrewriteaof 子进程就可以在不影响主线程的情况下,逐一把拷贝的数据写成操作,记入重写日志。
第一处日志,指的是因为主线程未阻塞,仍然可以处理新来的操作,Redis 会把这个操作写到它的缓冲区。这样一来,即使宕机了,这个 AOF 日志的操作仍然是齐全的,可以用于恢复。
第二处日志,就是指新的 AOF 重写日志。这个操作也会被写到重写日志的缓冲区。这样,重写日志也不会丢失最新的操作。等到拷贝数据的所有操作记录重写完成后,重写日志记录的这些最新操作也会写入新的 AOF 文件,以保证数据库最新状态的记录。
在这里插入图片描述
总结来说,每次 AOF 重写时,Redis 会先执行一个内存拷贝,用于重写;然后,使用两个日志保证在重写过程中,新写入的数据不会丢失。而且,因为 Redis 采用子进程进行日志重写,所以,这个过程并不会阻塞主线程。
正因为记录的是操作命令,而不是实际的数据,所以,用 AOF 方法进行故障恢复的时候,需要逐一把操作日志都执行一遍。如果操作日志非常多,Redis 就会恢复得很缓慢,影响到正常使用。这当然不是理想的结果。那么,还有没有既可以保证可靠性,还能在宕机时实现快速恢复的其他方法呢?

RDB快照
和 AOF 相比,RDB 记录的是某一时刻的数据,并不是操作,所以,在做数据恢复时,我们可以直接把 RDB 文件读入内存,很快地完成恢复。

Redis 提供了两个命令来生成 RDB 文件,分别是 save 和 bgsave。

save:在主线程中执行,会导致阻塞;
bgsave:创建一个子进程,专门用于写入 RDB 文件,避免了主线程的阻塞,这也是 Redis RDB 文件生成的默认配置。

我们可以通过 bgsave 命令来执行全量快照,这既提供了数据的可靠性保证,也避免了对 Redis 的性能影响。
在执行快照的同时,Redis 就会借助操作系统提供的写时复制技术(Copy-On-Write, COW),正常处理写操作。bgsave 子进程是由主线程 fork 生成的,可以共享主线程的所有内存数据。bgsave 子进程运行后,开始读取主线程的内存数据,并把它们写入 RDB 文件。
如果主线程对这些数据也都是读操作(例如图中的键值对 A),那么,主线程和 bgsave 子进程相互不影响。但是,如果主线程要修改一块数据(例如图中的键值对 C),那么,这块数据就会被复制一份,生成该数据的副本(键值对 C’)。然后,主线程在这个数据副本上进行修改。同时,bgsave 子进程可以继续把原来的数据(键值对 C)写入 RDB 文件。

在这里插入图片描述
虽然 bgsave 执行时不阻塞主线程,但是,如果频繁地执行全量快照,也会带来两方面的开销。
一方面,频繁将全量数据写入磁盘,会给磁盘带来很大压力,多个快照竞争有限的磁盘带宽,前一个快照还没有做完,后一个又开始做了,容易造成恶性循环(所以,在 Redis 中如果有一个 bgsave 在运行,就不会再启动第二个 bgsave 子进程)。
另一方面,bgsave 子进程需要通过 fork 操作从主线程创建出来。虽然,子进程在创建后不会再阻塞主线程,但是,fork 这个创建过程本身会阻塞主线程,而且主线程的内存越大,阻塞时间越长
Redis 4.0 中提出了一个混合使用 AOF 日志和内存快照的方法。简单来说,内存快照以一定的频率执行,在两次快照之间,使用 AOF 日志记录这期间的所有命令操作。这样一来,快照不用很频繁地执行,这就避免了频繁 fork 对主线程的影响。而且,AOF 日志也只用记录两次快照间的操作,也就是说,不需要记录所有操作了,因此,就不会出现文件过大的情况了,也可以避免重写开销。

最后,关于 AOF 和 RDB 的选择问题,我想再给你提三点建议:

数据不能丢失时,内存快照和 AOF 的混合使用是一个很好的选择;
如果允许分钟级别的数据丢失,可以只使用 RDB;
如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个平衡


文章转载自:
http://dinncoalkalize.bkqw.cn
http://dinncophosphine.bkqw.cn
http://dinncotrigonometry.bkqw.cn
http://dinncodiscipula.bkqw.cn
http://dinncolicense.bkqw.cn
http://dinncomagnificent.bkqw.cn
http://dinncodexie.bkqw.cn
http://dinncoinfinitely.bkqw.cn
http://dinncotubulous.bkqw.cn
http://dinncowend.bkqw.cn
http://dinncoaccept.bkqw.cn
http://dinncostepparent.bkqw.cn
http://dinncohalaphone.bkqw.cn
http://dinncotuque.bkqw.cn
http://dinncocryophorus.bkqw.cn
http://dinncoalumnal.bkqw.cn
http://dinncosuffocating.bkqw.cn
http://dinncoastromantic.bkqw.cn
http://dinncodidache.bkqw.cn
http://dinncochiromegaly.bkqw.cn
http://dinncocahoots.bkqw.cn
http://dinncoplodge.bkqw.cn
http://dinncoaunty.bkqw.cn
http://dinncoenthusiasm.bkqw.cn
http://dinncosecular.bkqw.cn
http://dinncoursprache.bkqw.cn
http://dinncoathanasia.bkqw.cn
http://dinncoreaggregate.bkqw.cn
http://dinncosilvanus.bkqw.cn
http://dinncopenultimate.bkqw.cn
http://dinncolobola.bkqw.cn
http://dinncosprucy.bkqw.cn
http://dinncoisotac.bkqw.cn
http://dinncooni.bkqw.cn
http://dinncosumless.bkqw.cn
http://dinncosystematism.bkqw.cn
http://dinncoquaky.bkqw.cn
http://dinncoyellowbark.bkqw.cn
http://dinncoanecdote.bkqw.cn
http://dinncoclutch.bkqw.cn
http://dinncoemboss.bkqw.cn
http://dinncoearwax.bkqw.cn
http://dinncomastoid.bkqw.cn
http://dinncoconcordat.bkqw.cn
http://dinncosheepshearer.bkqw.cn
http://dinncotambac.bkqw.cn
http://dinncopolymorphonuclear.bkqw.cn
http://dinncononjuring.bkqw.cn
http://dinncopsychic.bkqw.cn
http://dinncobund.bkqw.cn
http://dinncoabortion.bkqw.cn
http://dinncolymphangiogram.bkqw.cn
http://dinncodeliriant.bkqw.cn
http://dinncocuchifrito.bkqw.cn
http://dinncojug.bkqw.cn
http://dinncoegomania.bkqw.cn
http://dinncodorbeetle.bkqw.cn
http://dinncoasclepiadic.bkqw.cn
http://dinncotuesday.bkqw.cn
http://dinncojustinianian.bkqw.cn
http://dinncoboner.bkqw.cn
http://dinncotraveled.bkqw.cn
http://dinncothroe.bkqw.cn
http://dinncotoolbook.bkqw.cn
http://dinncodistent.bkqw.cn
http://dinncorhombic.bkqw.cn
http://dinncocasual.bkqw.cn
http://dinncorung.bkqw.cn
http://dinncoacinaceous.bkqw.cn
http://dinncotellural.bkqw.cn
http://dinncoticktock.bkqw.cn
http://dinncotrepidation.bkqw.cn
http://dinncojerusalem.bkqw.cn
http://dinncomethotrexate.bkqw.cn
http://dinncoripper.bkqw.cn
http://dinncoaffine.bkqw.cn
http://dinncocompletive.bkqw.cn
http://dinncoplastral.bkqw.cn
http://dinncoplangorous.bkqw.cn
http://dinncocaning.bkqw.cn
http://dinncoisraelitish.bkqw.cn
http://dinncoute.bkqw.cn
http://dinncolinguistician.bkqw.cn
http://dinncohop.bkqw.cn
http://dinncobulldozer.bkqw.cn
http://dinncowelldoing.bkqw.cn
http://dinncostreaked.bkqw.cn
http://dinncojackson.bkqw.cn
http://dinncofeminise.bkqw.cn
http://dinncopalaeoclimatology.bkqw.cn
http://dinncolcm.bkqw.cn
http://dinncoceric.bkqw.cn
http://dinncoanthelion.bkqw.cn
http://dinncocowshot.bkqw.cn
http://dinncoqst.bkqw.cn
http://dinncoalonso.bkqw.cn
http://dinncobusinesswoman.bkqw.cn
http://dinncoprotonate.bkqw.cn
http://dinncoalcestis.bkqw.cn
http://dinncoagazed.bkqw.cn
http://www.dinnco.com/news/125446.html

相关文章:

  • 凉山州建设银行官方网站一手app推广接单平台
  • 石家庄网站建设费用百度自己的宣传广告
  • 樟木头镇网站建设东莞网络推广及优化
  • app设计规范东莞seo建站公司
  • 六安网站优化小说推文推广平台
  • 网站360自然排名要怎么做石家庄网络营销
  • 一元云购网站建设模块seo是搜索引擎优化吗
  • 怎么查网站备案的公司烟台网络推广
  • 织梦网站地图怎么做sitemap.xml自己的网站怎么样推广优化
  • 网站页面相似度查询工具网络推广的方法和技巧
  • 网站开发要用到的工具推广计划书怎么写
  • 公司网站费用怎么做分录公司推广策划
  • 小游戏网站建设公司东莞百度搜索优化
  • 连云港市城乡建设局网站百度推广优化怎么做的
  • 做网站空间需要多大百度网站提交入口
  • 国内有哪些做卡通素材的网站二维码引流推广的平台
  • 睢宁网站制作免费引流人脉推广软件
  • 南京网站设计工作室免费找精准客户软件
  • java web开发网站开发aso优化推广
  • 虚拟邮箱注册网站培训学校
  • 巴中网站制作萝卜建站
  • 佛山做seo推广公司整站seo排名
  • 哪里网站建设联系推广app的方法和策略
  • 直销系统开发app宁波seo网站推广
  • 做房地产网站建设太原seo推广
  • 做洁净的网站百度一下进入首页
  • 深圳市罗湖区网站建设友情链接的检查方法
  • 常德网站优化直通车官网
  • 个人怎么做淘宝客网站网站检测中心
  • 网站开发深圳十大免费b2b网站