Redis持久化存储策略(RDB、AOF)
Redis的两种存储方式
一、RDB方式
1.1、RedisDatabase(RDB):
就是将内存中数据存储到磁盘(集快照的方式)中,然后需要恢复数据的时候将磁盘中的数据再读到内存中,也就是当redis关机后,或者故障处理后,再次启动redis服务器的时候再将数据从磁盘读到硬盘中(快照文件)
在操作redis的时候,是走一个子进程,将数据集写入一个临时文件中,写入成功后再替换原来的文件(二进制压缩存储)
所以适合做备份文件
1.2、配置RDB 文件
1、配置存储时间(刷新数据到磁盘)
900 1 是指在15分钟 ,如果操作一次就刷新
300 10 是指在6分钟 如果操作10次就刷新……
2、配置文件名称
这里默认是dump(可以改。eg:Mydump)
3、配置存储的路径
这里默认为当前路径
如果存一个三个值(mset age 1 name zqs hobby pingpong )刷新后查看的二进制文件为
1.3、优缺点(特性)
优点:由于存储的是数据快照文件,恢复数据很方便,也比较快
缺点:
1)会丢失最后一次快照以后更改的数据。如果你的应用能容忍一定数据的丢失,那么
使用 rdb 是不错的选择;如果你不能容忍一定数据的丢失,使用 rdb 就不是一个很好的选择。
2)由于需要经常操作磁盘,RDB 会分出一个子进程。如果你的 redis 数据库很大的话,
子进程占用比较多的时间,并且可能会影响 Redis 暂停服务一段时间(millisecond 级别),
如果你的数据库超级大并且你的服务器 CPU 比较弱,有可能是会达到一秒。
二、AOF方式
2.1、Append-onlyFile(AOF)
Redis每次接收到一条改变数据的命令时,它将把该命令写到一个AOF文件中(只记录写操作,读操作不记录),当Redis重启时,它通过执行AOF文件中所有的命令来恢复数据。
2.2、配置AOF文件
①:appendonly:默认是no,改成yes即开启了aof持久化
②:appendfilename:指定AOF文件名,默认文件名为appendonly.aof
③:dir:指定RDB和AOF文件存放的目录,默认是./
④:appendfsync:配置向aof文件写命令数据的策略:
no:不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次),比较快但不
是很安全。
always:每次执行写入都会执行同步,慢一些但是比较安全。
everysec:每秒执行一次同步操作,比较平衡,介于速度和安全之间。这是默认项。
2.3、特性
1)append-only 文件是另一个可以提供完全数据保障的方案;
2)AOF 文件会在操作过程中变得越来越大。比如,如果你做一百次加法计算,最后你只会
在数据库里面得到最终的数值,但是在你的 AOF 里面会存在 100 次记录,其中 99 条记
录对最终的结果是无用的;但 Redis 支持在不影响服务的前提下在后台重构 AOF文件,让
文件得以整理变小
3)可以同时使用这两种方式,redis 默认优先加载 aof 文件(aof 数据最完整);