1.redis持久化
- 什么是持久化?
把内存中的数据持久化到磁盘。这个过程就是持久化。 当redis启动时会从磁盘上读取数据并加载到内存。
- 持久化的好处
使redis宕机后数据不会丢失
- redis持久化的方式
- RDB: 以快照的方式进行持久化。 在一定时间间隔内进行快照。把数据进行保存到磁盘。
- AOF: 会把每次对redis的写操作命令追加到一个日志尾,当redis启动时则把该日志中的命令执行一遍.
2.RDB的持久化方式
- 什么时候会触发RDB
//默认dump.rdb
1. save命令
2. bgsave命令
3. 配置redis配置文件。
-
save和bgsave的区别
该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:
执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。
bgsave执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:
3. 通过配置文件来触发RDB ----- bgsave命令
4. 恢复数据
可以把dump.rdb放入到redis启动目录下。 当redis再次被启动时则会加载该数据。
- rdb持久化方式的优缺点
优点:
(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
(2)bgsave生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
缺点:
快照持久化期间修改的数据不会被保存,可能丢失数据。数据完整性比较差。
3.AOF持久化方式
提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。
AOF默认是没有开启。需要配置手动开启。
什么时候会触发AOF
当进行写操作则会把写的命令放入appendonly.aof
AOF的优缺点:
1.优点
1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。
2.缺点:
1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
2) 恢复数据时时间要比快照模式慢很多。