redis_数据的持久化

持久化

Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。

1.RDB 持久化

RDB是redis默认的持久化机制。RDB相当于快照,保存的是一种状态。默认文件名是dump.rdb。

将某个时间点的所有数据都存放到硬盘上。

可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。

如果系统发生故障,将会丢失最后一次创建快照之后的数据。

如果数据量很大,保存快照的时间会很长。

2.AOF 持久化

由于快照方式是在一定时间间隔内做一次,所以如果redis意外down掉,就会丢失最后一次快照所有的修改,如果应用要求不能丢失任何修改的话,可以采用AOF。

将写命令添加到 AOF 文件(Append Only File)的末尾。

使用 AOF 持久化需要设置同步选项,从而确保写命令什么时候会同步到磁盘文件上。这是因为对文件进行写入并不会马上将内容同步到磁盘上,而是先存储到缓冲区,然后由操作系统决定什么时候同步到磁盘。有以下同步选项:

选项 同步频率
always 每个写命令都同步
everysec 每秒同步一次
no 让操作系统来决定何时同步

always 选项会严重减低服务器的性能;

everysec 选项比较合适,可以保证系统崩溃时只会丢失一秒左右的数据,并且 Redis 每秒执行一次同步对服务器性能几乎没有任何影响;

no 选项并不能给服务器性能带来多大的提升,而且也会增加系统崩溃时数据丢失的数量。

随着服务器写请求的增多,AOF 文件会越来越大。Redis 提供了一种将 AOF 重写的特性,能够去除 AOF 文件中的冗余写命令。

文章目录
  1. 1. 持久化
    1. 1.1. 1.RDB 持久化
    2. 1.2. 2.AOF 持久化
| 139.6k