因为Redis是内存型数据库,所以为了防止因为系统崩溃等原因导致数据丢失的问题,Redis提供了两种不同的持久化方法来将数据存储在硬盘里面,一种方法是快照(RDB),它可以将存在于某一个时刻的所有数据都写入到硬盘里面,另外一种方法是只追加文件(AOF),它会在执行写命令时,将被执行的写命令都写入到硬盘里面。
快照持久化
Redis可以通过创建快照来获得在内存里面的数据在某一个时间点上的副本。在创建快照之后,用户可以对快照进行备份,可以将快照复制到其它服务器从而创建具有相同数据的服务器副本,还可以将快照留在原地以便重启服务器时使用。
有两个命令可以用于生成RDB文件,一个是SAVE,另外一个BGSAVE。
在只使用快照持久化来保存数据时,如果系统真的发生崩溃,用户将丢失最近一次生成快照之后更改的所有数据。因此,快照持久化只适用于那些即使丢失一部分数据也不会造成问题的应用程序。
SAVE
特点:SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕,在服务器进程阻塞期间,服务器不能处理任何命令请求。
缺点:服务器持久化期间无法接受其它请求。
BGSAVE
特点:BGSAVE命令则会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程则继续处理命令请求。
缺点:创建子进程所耗费的时间会随着Redis占用的内存而增加。
AOF持久化
AOF持久化会将被执行的写命令写到AOF文件的末尾,以此来纪录数据所发生的变化,因此,Redis只要从头到尾重新执行一次AOF文件所包含的所有写命令,就可以恢复AOF文件所记录的数据集。
在设置同步频率的时候,存在三个选项:
选项
同步频率
always
每个Redis写命令都要同步写入硬盘,但是这样做会占用Redis所拥有的内存,严重降低Redis的速度
everysec
每秒执行一次同步,显式地将多个写命令同步到硬盘
no
让操作系统来决定应该何时进行同步
最好使用everysec,既能避免每次都写入所造成的性能影响,又能避免操作系统崩溃所导致的可能丢失不定量数据,其即使系统崩溃,用户最多只会丢失一秒之内产生的数据,当硬盘忙于执行写入操作的时候,Redis还会优雅的放慢自己的速度以便适应硬盘的最大写入速度。
缺点:因为Redis会不断的将被执行的写命令纪录到AOF文件里面,所以随着Redis不断执行,AOF文件的体积也会不断增长,极端条件下,AOF甚至可能会用完硬盘的所有可用空间。
为了解决上面的缺点,Redis提供了BGREWRITEAOF命令,这个命令会通过移除AOF文件中的冗余命令来重写AOF文件,使得AOF文件尽可能的小。它的原理和BGSAVE命令相似,Redis会创建一个子进程,然后由子进程负责对AOF文件进行重写,因为AOF文件重写也需要用到子进程,所以同样存在快照持久化因为创建子进程所导致的性能问题和内存占用问题。
更新日志
- 王馨平.2014-TRULY(翻唱辑)【Luvlee】【WAV+CUE】
- 李思思《梨花又开放》24K金碟头版限量编号[WAV+CUE][728M]
- 孙露《放你在心里》[WAV+CUE][720M]
- 孟慧圆《人生颁奖典礼》[320K/MP3][84.47MB]
- 物华弥新迷踪盘第二十九关怎么过 迷踪盘第二十九关通关方法
- 逆水寒手游五子棋第二十八关怎么过 逆水寒手游残局攻略大全
- 逆水寒手游五子棋第二十七关怎么过 逆水寒手游残局攻略大全
- 赵传1988-我很丑可是我很温柔[日本天龙刻字1B2版][WAV]
- [EAC]KOKIA吉田亚纪子--Fate[WAV]
- 云水谣《小调江南3·油纸煞APE+CUE
- 《地狱潜者2》社区经理傲慢回应:不愿绑定就留差评
- 国外《地狱潜者2》玩家缅怀中国玩家:你是我的英雄
- 曝《GTA6》女主演员已被确认!曾配音《GTA Online》
- 群星.2013-极品对唱篇LPCD45【环球】【WAV+CUE】
- 二手玫瑰.2010-人人有颗主唱的心【糖衣文化】【WAV+CUE】