1、Redis的强大功能很大程度上是由于将其所有的数据存储在内存中,为了使Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式持久化到硬盘中。
2、概念:持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内存中的数据,会丢失。
3、持久化方式:
RDB方式 、 AOF方式
4、RDB
RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定有2个参数构成:时间和改动键的个数,当
在指定时间内被更改的键的个数大于指定数值时就会进行快照
RDB是Redis默认的持久化方式
配置
15分钟内至少有一个键被更改则进行快照
5分钟内至少有10个键被更改则进行快照
1分钟内至少有10000个键被更改则进行快照
rdb文件
默认的rdb文件路劲是在当前目录,文件名:dump.rdb,可以在配置文件中修改路劲和文件名,分别是dir和dbfilename
rdb数据恢复过程
redis启动后会读取rdb快照文件,将数据从硬盘载入到内存中,一般情况下1GB的快照文件载入到内存的时间需要20-30分钟(根据服务器的性能不同)
快照过程
1、redis使用fork函数复制一份当前的进程(父进程)的副本(子进程);
2、父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入到硬盘的临时文件
3、当子进程写入完所有的数据后就会用临时文件替换旧的rdb文件
手动快照
可以通过SAVE和BGSAVE命令来手动快照,两个命令的区别是前者由主进程进行快照,会阻塞其它的请求,后者是通过fork子进程进行快照
rdb文件压缩
可以配置rdbcompression来进行压缩
压缩和不压缩的优缺点:
压缩:
优点:减少磁盘存储空间
缺点:消耗CPU资源
不压缩:
优点:不消耗CPU资源
缺点:占用磁盘空间多
Redis默认是开启压缩的,配置:
5、AOF
redis的AOF持久化策略是将发送到reddis服务端的每一条命令都记录下来并且保存到硬盘中的AOF文件中,AOF文件
的位置和RDB文件的位置相同都是通过dir参数设置默认的文件名是appendonly.aof,可以通过appendfilename参数修改