zoukankan      html  css  js  c++  java
  • redis学习三 redis持久化

     

    1,快照持久化

         1简介

         redis可以通过创建快照来获得某个时间点上的内存内容的数据副本,有了副本之后,就可以将副本发送到其他redis服务器上从而创建相同数据的从服务器,同时快照留在原地以便重启redis的时候实现数据恢复。

         2配置 

         save 60 1000  快照生成策略  如果服务器距离上一次成功生成快照已经超过六十秒,并且期间执行了至少1000次写操作。
         stop-writes-on-bgsave-error yes 创建快照文件失败后是否继续执行写命令
         rdbcompression yes   是否对快照文件进行压缩
         dbfilename dump.rdb  快照文件名称
         dir /opt/redis-2.8.13/dmp/  持久化文件保存的路径

         3快照文件生成的时机

         1,向redis发送bgsave命令,redis会调用fork来创建一个子进程,子进程负责创建快照,父进程继续处理命令请求。
         2,向redis发送save命令,父进程停止响应其他命令,开始进行快照创建,save命令通常不用,一般在没有足够内存执行bgsave的时候或者让客户端等待也没关系的时候使用。
         3,根据用户设置的save 策略配置信息,进行执行。如果配置多个,只要满足一个就执行。
         4,redis接收到shutdown或者标准term命令的时候,会触发save命令,创建快照。
         5,当从服务器链接到主服务器并且发送sync命令来同步数据的时候,并且这个时候主服务器没有在执行bgsave或者不是刚刚执行完bgsave的话,就创建个快照,以供复制使用。
         当内存数据量不那么大的时候,使用快照持久化比较不错。但是如果数据量达到了十几个G以上的那种,执行一个bgsave会特别慢,save的话会快点,但是也会耗费比较多时间,并且快照文件也比较大。这个时候就需要使用AOF持久化了。

    2,AOF持久化

         1简介

         简单来说,AOF持久化会将执行的写命令写到AOF文件末尾来记录所有的变化。redis只要从头到尾执行一次AOF文件的命令,就可以进行数据恢复了。

         2,配置

         appendonly yes  是否打开AOF持久化
         appendfilename "appendonly.aof"  持久化文件名称
         # appendfsync always  每次redis写命令都进行持久化,这样会严重降低redis速度,但是数据基本不丢失
         appendfsync everysec     每秒进行一次,丢失数据也是一秒内的
         # appendfsync no     让操作系统自己决定什么时候执行
         no-appendfsync-on-rewrite no
         auto-aof-rewrite-percentage 100  当aof文件比上次重写之后体积大了至少100%,进行重写
         auto-aof-rewrite-min-size 64mb     当体积岛屿64M的时候重写
         上面这两个条件同时符合的时候才重写。
         dir /opt/redis-2.8.13/dmp/  持久化文件保存的路径

         3,AOF文件重写

         AOF文件由于会不断的追加写入命令,因此体积会越来越大,这时向redis发送bgrewriteaof命令,可以重写aof,将其中的冗余命令删除掉,减小体积,也是主进程fork出一个子进程来处理。针对这个命令也可以配置一下让redis自己维护执行。

    3,数据恢复

         当redis服务器挂掉时,重启时将按照以下优先级恢复数据到内存:
         如果只配置AOF,重启时加载AOF文件恢复数据;(将rdb的配置信息都注释掉就关闭了rdb,只要不主动发送bgsave命令就不持久化了)
         如果同时 配置了RBD和AOF,启动是只加载AOF文件恢复数据;
         如果只配置RBD,启动是讲加载dump文件恢复数据。
  • 相关阅读:
    python timeit模块用法
    boto3库限速
    golang-Beego-orm创建的坑
    Java07
    Java06
    Java04
    Java03
    c
    Mac 安装GCC
    命令: go build
  • 原文地址:https://www.cnblogs.com/liouwei4083/p/6051751.html
Copyright © 2011-2022 走看看