Redis——持久化机制实操
可以借鉴这两篇文章http://redis.cn/topics/persistence.html、https://www.jianshu.com/p/d947bec4c4bf
Redis——持久化机制实操
实操持久化机制AOF(老版本):
一、先将redis服务停掉;
二、进入redis的配置文件,修改redis持久化相关配置:vi /etc/redis/6379.conf
1:先修改redis运行状态,使redis在前台阻塞运行:daemoinze no
2:注释掉写入日志文件指令:
3:开启aof:appendonly yes
4:关闭混合模式:aof-use-rdb-preamble no
5:启动redis服务:redis-server /etc/redis/6379.conf(注意这里要携带配置文件一起启动,否则配置不生效)
redis的日志文件是记录在:/var/lib/redis该目录下
6:然后我们对redis进行写入操作,在该目录下会生成一个appendonly.aof文件
三、解读aof文件:用vi指令查看,vi appendonly.aof
打开appendonly.aof文件1:*2:表示进行两句操作,如:“SELECT”,“0”,表示为选择了第“0”号库;
2:$6:表示对应操作占用的字符长度为6,“SELECT”的字符长度为6;
3:$1:表示对应操作占用的字符长度为1,“0”的字符长度为1;
4:同理:*3、$3、$5也是一样的意思
四:操作RDB文件,执行相关指令后,可使用bgsave,进行写入RDB,在日志目录(/var/lib/redis)下会生成一个dump.rdb;备注:save一般不用,因为执行的时候redis直接不提供服务了。save指令会阻塞当前Redis服务器,知道RDB过程完成位置,会造成长时间阻塞。不建议使用,使用redis-check-rdb dump.rdb会对RDB文件进行校验,并提示出哪里数据有问题。
1:然后阻塞的redis服务会提示出相关信息
2:同时可以执行bgrewriteaof重写aof
五:开启混合模式情况下(新版本):aof-use-rbd-preamble yes
1:开启后重新启动redis,同样要携带配置文件一起启动
2:我们在将 /var/lib/redis/6379/ 目录下的aof文件和rdb文件删除
3:然后重新开启客户端,并输入相关指令,输入指令之后,要出入一次bgrewriteaof,然后在查看日志目录边 的aof文件有何区别?
4:前半部分用的却是二进制文件,也是就RDB的格式,而后半部分却是aof明文的日志格式写入,这便是混合模式写入文件格式。既有RDB的效率,又保证数据的及时性。
5:同样的执行 bgsave之后,会生成dump.rbd文件
6:注意:当如果执行FLASHALL之后,如果又执行了bgrewriteaof的话,那么aof文件会直接清空,所以如果要恢复数据,不能再flashall之后进行重写aof操作
六、判断自动执行bgrewriteaof的配置,如果达到100%了就自动重写,或者达到最小64M就自动重写。
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb