redis持久化

Redis支持RDB和AOF两种持久化机制,持久化功能有效避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化生成的文件即可实现数据恢复

一.RDB持久化

1.RDB是什么

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发

1.1 认识

RDB是一个紧凑压缩的二进制文件,在.conf文件中save 100 1,是每间隔100s,会检测这100s之内是否有一个写入操作,如果有,100s后会将写入的数据写入到.rdb文件中,替换原来的rdb文件,但是如果100s内redis服务断了,也不会触发事件,这就造成数据丢失

1.2 触发机制

手动触发分别对应save和bgsave命令:

save命令:阻塞当前Redis服务器,知道RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,先上环境不建议使用。运行save命令对应Redis日志如下:

DB saved on disk

bgsave(Background save)命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一段时间很短。运行bgsave名字对应的Redis日志如下:

Background saving started by pid 3152
DB saved on disk
RDB: 0MB of memory userd by copy-on-write
Background saving terminated with success

2.配置文件

创建rdbdump.conf文件,文件写入以下内容

daemonize yes #后台运行 
port 6379 	#指定端口 
logfile /data/6379/redis.log	#指定日志路径
dir /data/6379	#redis的数据文件,会存放在这里(此文件夹需要先创建)
dbfilename  s24dbmp.rdb    	# 开启rdb持久化,且指定持久化文件的名字
bind 0.0.0.0
save 900 1 	  #每隔900s,会检测900s之内是否有1次写入数据操作,如果有,则存入
save 300 10
save 60  10000  

指定conf文件启动redis

redis-server rdbdump.conf

此时再进入redis客户端,输入 写命令(set key value),900s之后,会自动生成s24dbmp.rdb文件,此时再手动关闭进程(pkill -9 redis-server),再重新启动redis-server服务,会读取s24dbmp.rdb文件,再开redis-cli客户端,检查之前的数据,仍在。

二.AOF

1. AOF是什么

在了解AOF之前,先来解释以下为什么要有AOF?

我们知道,在rdb持久化的conf文件中有:save 90 1 ,意思是,在90s之内,如果有一次写操作,第90s会触发save命令,生成rdb文件,但是,如果是在第5s写入数据,第10s服务断开,那么第90s也无法持久化,因此推出了AOF持久化,用来解决这种问题

AOF文件记录了所有的增删改操作指令,当服务断开然后重启时,会自动读取AOF文件所有指令,全部再执行一遍,用来生成数据,因此AOF的文件会比rdb文件大。

2.配置文件

新建aof.conf

daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
appendonly yes  		 #开启aof的俩参数
appendfsync everysec     #aof的持久化机制,每s往aof文件中追加 

指定aof文件启动redis

redis-server aof.conf

三.不重启,切换rdb为aof

1.首先,当前库的配置模式为rdb

2.通过命令,直接切换为aof

127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
OK

3.正确情况下,会生成aof日志文件了,此时命令操作都是在aof里面了

4.还得修改配置文件,以上命令只是临时生效,改完以后,下次指定配置文件启动,就一直是aof了

port 6379
	logfile /data/6379/redis.log
	dir /data/6379
	dbfilename  dbmp.rdb
	save 900 1
	save 300 10
	save 60  10000
	daemonize yes
	appendonly yes  
	appendfsync everysec     
posted @ 2019-12-25 14:33  MISF  阅读(89)  评论(0编辑  收藏  举报
     JS过度和变形效果演示   
  
    html5.png