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

网站设计建设公司排行宁金诚信建设网站

网站设计建设公司排行,宁金诚信建设网站,小学手工制作100种,佛山企业网站建设工作室什么是AOF日志 AOF日志是redis为数据的持久化提供了的一个技术,日志里面记录着执行redis写命令。每当redis执行一条写命令的时候#xff0c;就会将该命令记录 到AOF日志当中。当redis启动的时候#xff0c;可以加载AOF日志中的所有指令#xff0c;并执行这些指令恢复所有的… 什么是AOF日志 AOF日志是redis为数据的持久化提供了的一个技术,日志里面记录着执行redis写命令。每当redis执行一条写命令的时候就会将该命令记录 到AOF日志当中。当redis启动的时候可以加载AOF日志中的所有指令并执行这些指令恢复所有的数据。 在 Redis 中 AOF 持久化功能默认是不开启的需要我们修改 redis.conf 配置文件中的以下参数 Redis 是先执行写操作命令后才将该命令记录到 AOF 日志里的  优点先执行写操作命令再记录日志的话只有在该命令执行成功后才将命令记录到 AOF 日志里这样就不用额外的检查开销不会出现语法错误等问题保证记录在 AOF 日志里的命令都是可执行并且正确的 缺点执行写操作命令和记录日志是两个过程那当 Redis 在还没来得及将命令写入到硬盘时服务器发生宕机了这个数据就会有丢失的风险 写入AOF日志的过程 Redis 执行完写操作命令后会将命令追加到 server.aof_buf 缓冲区然后通过 write() 系统调用将 aof_buf 缓冲区的数据写入到 AOF 文件此时数据并没有写入到硬盘而是拷贝到了内核缓冲区 page cache等待内核将数据写入硬盘 redis.conf 配置文件中的 appendfsync 配置项可以有以下 3 种参数可填 Always这个单词的意思是「总是」所以它的意思是每次写操作命令执行完后同步将 AOF 日志数据写回硬盘Everysec这个单词的意思是「每秒」所以它的意思是每次写操作命令执行完后先将命令写入到 AOF 文件的内核缓冲区然后每隔一秒将缓冲区里的内容写回到硬盘No意味着不由 Redis 控制写回硬盘的时机转交给操作系统控制写回的时机也就是每次写操作命令执行完后先将命令写入到 AOF 文件的内核缓冲区再由操作系统决定何时将缓冲区内容写回硬盘。 Always 策略的性能比较差可靠性高尽可能保证数据不会丢失 Everysec策略性能适中宕机会丢失一秒的数据 No策略性能良好宕机会丢失较多的数据 AOF重写机制 AOF 日志是一个文件随着执行的写操作命令越来越多文件的大小会越来越大。 其中AOF日志中 Redis 为了避免 AOF 文件越写越大提供了 AOF 重写机制当 AOF 文件的大小 超过所设定的阈值后Redis 就会启用 AOF 重写机制来压缩 AOF 文 件。 AOF重写机制 读取当前数据库中的所有键值对然后将每一个键值对用一条命令记录到「新的 AOF 文件」 作用 尽管某个键值对被多条写命令反复修改最终也只需要根据这个「键值对」当前的最新状态然后用一条命令去记录键值对代替之前记录这个键值对的多条命令这样就减少了 AOF 文件中的命令数量。最后在重写工作完成后。最后在重写工作完成后将新的 AOF 文件覆盖现有的 AOF 文件。 为什么重写 AOF 的时候不直接复用现有的 AOF 文件而是先写到新的 AOF 文件再覆盖过去 如果 AOF 重写过程中失败了现有的 AOF 文件就会造成污染可能无法用于恢复使用。 AOF后台重写 当 触发 AOF 重写时比如当 AOF 文件大于 64M 时就会对 AOF 文件进行重写这时是需要读取所有缓存的键值对数据并为每个键值对生成一条命令然后将其写入到新的 AOF 文件重写完后就把现在的 AOF 文件替换掉。这个过程其实是很耗时的所以重写的操作不能放在主进程 所以Redis 的 重写 AOF 过程是由后台子进程 bgrewriteaof 来完成的这样做有两个作用 子进程进行 AOF 重写期间主进程可以继续处理命令请求从而避免阻塞主进程父进程 使用fork 创建子进程时父子进程是共享内存数据的不过这个共享的内存只能以只读的方式而当父子进程任意一方修改了该共享内存就会发生「写时复制」所以子进程在执行后台重写是不影响父进程。 子进程是怎么拥有主进程一样的数据副本的呢 当父进程 使用fork 创建子进程的时候会将父进程中的页表 复制给子进程因此父子进程它们的共享一块物理内存。 写时复制顾名思义在发生写操作的时候操作系统才会去复制物理内存这样是为了防止 fork 创建子进程时由于物理内存数据的复制时间过长而导致父进程长时间阻塞的问题。 重写子进程只会对这个内存进行只读重写 AOF 子进程会读取数据库里的所有数据并逐一把内存数据的键值对转换成一条命令再将命令记录到重写日志新的 AOF 文件 重写 AOF 日志过程中如果主进程修改了已经存在 key-value此时这个 key-value 数据在子进程的内存数据就跟主进程的内存数据不一致了这时要怎么办呢 Redis 设置了一个 AOF 重写缓冲区这个缓冲区在创建 bgrewriteaof 子进程之后开始使用 在重写 AOF 期间当 Redis 执行完一个写命令之后它会同时将这个写命令写入到 「AOF 缓冲区」和 「AOF 重写缓冲区」。 当子进程完成 AOF 重写工作扫描数据库中所有数据逐一把内存数据的键值对转换成一条命令再将命令记录到重写日志后会向主进程发送一条信号。 主进程收到该信号后会调用一个信号处理函数该函数主要做以下工作 将 AOF 重写缓冲区中的所有内容追加到新的 AOF 的文件中使得新旧两个 AOF 文件所保存的数据库状态一致新的 AOF 的文件进行改名覆盖现有的 AOF 文件。
http://www.yutouwan.com/news/141069/

相关文章:

  • 苏州企业网站建设公司在虚拟主机上安装wordpress
  • 番禺龙美村做网站深圳市宝安区邮政编码多少
  • 如何在网盘上做网站百度云搜索引擎搜索
  • 做网站黑吃黑定什么罪公众号如何推广产品
  • 网站建设教学设计泰安做网站建设的
  • 长沙建个网站一般需要多少钱网页广告弹窗怎么屏蔽
  • 网站建设 广告科技创新作文
  • 天津建设集团网站新开传奇新服网手机版
  • 做图的网站网站建设招标书技术介绍
  • 江西网站建设推广怎么做网站管理系统
  • 大芬地铁站附近做网站深圳网上注册公司流程图
  • 重庆网站建设方案详细方案大良网站建设服务
  • 无锡网站建设系统常州网站建设团队
  • 网站技术策划内容企业站seo点击软件
  • 建设部评职称网站互联网项目网站
  • 如何自己建一个网站密云城市建设官方网站
  • php网站设计tengine wordpress
  • 万全孔家庄做网站如何维护企业电子商务网站建设
  • wordpress搬站skr搜索引擎入口
  • 在线图片编辑网站源码怎么用php自己做网站
  • 中国十大做网站公司排名新媒体运营培训班
  • 婚庆网站建设外国风格网站建设费用
  • 怎么建设一个购买卡密的网站亳州市网站建设公司
  • 乐之网站制作网页微信登陆首页
  • 动感十足的网站怎么开通公司网站
  • 邢台哪里建网站凡客资源
  • 网站做标准曲线怎么自己注册域名
  • 科技 杭州 网站建设烟台网站建设ytwzjs
  • 做损坏文档的网站无法打开网页是怎么回事
  • html网站设计模板下载ui设计包括哪些