7.持久化
Redis是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。
RDB持久化
将某个时间节点的所有数据都放在硬盘上。可以将快照复制到其他服务器从而创建具有相同数据的服务器副本。如果系统发生崩溃,将会丢失最后一次创建快照之后的数据。如果数据量很大,保存快照的时间会很长。
AOF持久化
将写命令添加到AOF文件(Append Only File)的末尾
使用AOF持久化需要设置同步选项,从而确保写命令什么时候会同步到磁盘文件上。这是因为对文件进行写入并不会马上将内容同步到磁盘上,而是先存储到缓冲区,然后由操作系统决定什么时候同步到磁盘。有以下同步选项:
选项 | 同步频率 |
---|---|
always | 每个写命令都同步 |
everysec | 每秒同步一次 |
no | 让操作系统来决定何时同步 |
- always选项会严重的减低服务器的性能。
- everysec选项比较合适,可以保证系统崩溃时只会丢失一秒左右的数据,并且Redis每秒执行一次同步对服务器性能几乎没有任何影响。
- no选项并不能给服务器性能带来多大提升,而且也会增加系统崩溃时数据丢失的数量
随着服务器写请求的增多,AOF文件会越来越大。Redis提供了一种将AOF重写的特性,能够去除AOF文件中的冗余写命令。