Redis的两种持久化方式-快照持久化(RDB)和AOF持久化
2017-05-17 17:30
603 查看
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为“持久化”效果。
redis有两种持久化功能,一种是“快照持久化(RDB)”,一种是“AOF持久化”。
RDB的缺点:耗时、耗性能、耗内存。不可控,容易丢失数据
如果对redis有数据操作,就会根据redis的配置文件指定的文件名和路径生成rdb文件,先来看一下redis配置方面的截图说明
再看一下在redis目录下生成的rdb文件
可以使用vim命令对dump.rdb文件编辑看一下内容
注意:如果您细心的发现,在对redis客户端进行数据操作之后,再次进行对dump.rdb文件进行编辑查看,文件中可能会缺少最近的操作记录,这与配置文件中备份的频率有关,下面看一下截图
以上三个save的意思都有了相应的说明,数据修改的频率非常高,备份的频率也高,数据修改的频率低,备份的频率也低。
如果发现dump.rdb文件缺少了最近的记录,那么在这补充一种手动持久化方式,可以立即看到效果,执行此命令
其次还包括一些其他的手动命令
由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用aof持久化方式
开启AOF持久化(会清空redis内部的数据,最好在redis使用之前就开启它)
我们在redis.conf配置文件中可以找到它:
修改完成配置之后重启redis
再次启动测试一下是否有数据
看一下目录下自定义的aof文件,目前得大小是0
操作之后
vim查看一下
所有指令全部写入文件
在redis.conf中,可以调整AOF备份形式:
对比下来,性能:always<everysec<no,而数据安全:always>everysec>no。
举例说明一下,这里就暂时不操作了,您可以拿redis的自增来操作:incr num ,执行此命令10次,然后查看一下aof文件,发现aof文件保存的是最终的数值,而且是set命令,这样就节省了空间,下面说一下就是把AOF备份文件中所有的备份数据的内容进行一个处理。
在启动redis客户端的时候,使用bgrewriteaof指令,就可以对aof备份文件的内容进行
优化压缩处理。截图对比一下处理先后的大小
完毕
redis有两种持久化功能,一种是“快照持久化(RDB)”,一种是“AOF持久化”。
RDB的缺点:耗时、耗性能、耗内存。不可控,容易丢失数据
1.snap shotting快照持久化
该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据非常多(10-20G)就不合适频繁操作该持久化操作。如果对redis有数据操作,就会根据redis的配置文件指定的文件名和路径生成rdb文件,先来看一下redis配置方面的截图说明
再看一下在redis目录下生成的rdb文件
可以使用vim命令对dump.rdb文件编辑看一下内容
注意:如果您细心的发现,在对redis客户端进行数据操作之后,再次进行对dump.rdb文件进行编辑查看,文件中可能会缺少最近的操作记录,这与配置文件中备份的频率有关,下面看一下截图
save 900 1 #900 秒内如果超过 1 个 key 被修改,则发起快照保存 save 300 10 #300秒超过10个key被修改,发起快照 save 60 10000 #60秒超过10000个key被修改,发起快照
以上三个save的意思都有了相应的说明,数据修改的频率非常高,备份的频率也高,数据修改的频率低,备份的频率也低。
如果发现dump.rdb文件缺少了最近的记录,那么在这补充一种手动持久化方式,可以立即看到效果,执行此命令
./redis-cli bgsave #异步保存
其次还包括一些其他的手动命令
./redis-cli shutdown #同步保存到服务器并关闭redis服务器 ./redis-cli lastsave #返回上次成功保存到磁盘的unix时间戳 ./redis-cli bgrewriteaof #当日志文件过长时优化AOF日志文件存储
由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用aof持久化方式
2.append only file(AOF持久化)
AOF持久化本质:把用户执行的每个“写”指令(添加/修改/删除)都备份到文件中,还原数据的时候就是执行具体写指令而已。开启AOF持久化(会清空redis内部的数据,最好在redis使用之前就开启它)
我们在redis.conf配置文件中可以找到它:
修改完成配置之后重启redis
再次启动测试一下是否有数据
看一下目录下自定义的aof文件,目前得大小是0
操作之后
vim查看一下
所有指令全部写入文件
在redis.conf中,可以调整AOF备份形式:
always 一写指令就备份一次。这样做虽然安全,但是系统性能会降低。不推荐使用 everysec 每一秒中备份一次。不管一秒钟变化了多少key,只备份一次,性能得到一定的保护。推荐使用。 no 会查看当前服务器状态,如果状态良好,就进行备份(随机)。这种备份方式数据是没有保证的。
对比下来,性能:always<everysec<no,而数据安全:always>everysec>no。
举例说明一下,这里就暂时不操作了,您可以拿redis的自增来操作:incr num ,执行此命令10次,然后查看一下aof文件,发现aof文件保存的是最终的数值,而且是set命令,这样就节省了空间,下面说一下就是把AOF备份文件中所有的备份数据的内容进行一个处理。
在启动redis客户端的时候,使用bgrewriteaof指令,就可以对aof备份文件的内容进行
优化压缩处理。截图对比一下处理先后的大小
完毕
相关文章推荐
- redis两种持久化方式rdb和aof
- Redis支持的两种持久化备份方式(RDB & AOF)
- redis笔记之两种持久化备份方式(RDB & AOF)
- Redis两种持久化方式(RDB&AOF)
- redis 两种持久化方式分析---rdb/aof
- Redis两种持久化方式rdb,aof
- redis 的两种持久化方式及原理
- redis 的两种持久化方式及原理
- redis 的两种持久化方式及原理
- Redis的持久化的两种方式drbd以及aof日志方式
- redis的两种持久化方式
- redis持久化两种方式
- Redis持久化的两种方式
- 源码分析:redis的RDB持久化方式
- redis 的两种持久化方式及原理
- redis的持久化(RDB和AOF方式)
- redis学习笔记---redis的持久化(RDB和AOF方式)
- Redis持久化磁盘IO方式及其带来的问题 有Redis线上运维经验的人会发现Redis在物理内存使用比较多,但还没有超过实际物理内存总容量时就会发生不稳定甚至崩溃的问题,有人认为是基于快照方式持
- redis之RDB持久化与AOF持久化
- REDIS学习(6)查看redis状态,以及rdb和aof两种持久化方案的区别