目录
一、Redis的持久化方式
1.RDB方式进行持久化
1.1 RDB的两种形式
(a)自动快照:
(b)手动快照
1.2.RDB的特点
1.3.RDB的使用情况
2.AOF方式进行持久化
2.1 AOF持久化
2.2 AOF重写机制
3.RDB和AOF使用情景
Redis虽然是缓存型数据库,但是它支持持久化操作
一、Redis的持久化方式
1.RDB方式进行持久化
通过快照的方式,将redis的内存结构记录到磁盘上面(记录的类型是二进制类型)
所以当redis服务停止后,再次启动redis就会去加载文件并且解析里面的数据,然后添加到内存当中
1.1 RDB的两种形式
(a)自动快照:
当在指定的时间内key达到了某个数量的改变,那么就会触发自动快照
(b)手动快照
1.前台快照(save):做快照需要一定的时间,在这个时间段中,如果客户端发送了命令过来,redis不会处理这个命令
2.后台快照(bgsave):启动一个线程去做快照,主线程处理客户端传过来的命令 (类似nginx的进程模型:master和work)
1.2.RDB的特点
速度快(因为是redis的内存结构以二进制保存的)
数据可能会丢失(因为快照是以时间点拍摄的,所以在某个时间段的数据可能没有做快照)
所以会数据不安全
1.3.RDB的使用情况
当不在乎部分数据可能丢失的情况下可以用RDB,因为持久化速度快
2.AOF方式进行持久化
2.1 AOF持久化
每次会把对redis数据库的写命令写入到一个文件中,所以它的数据安全,每次都记录了写操作,但是正因为如此IO次数多,速度就慢
所以它的持久化就是在redis启动的时候会把所有命令再执行一遍
2.2 AOF重写机制
因为每一个写命令都会存到一个文件中,所以文件中的数据就会很多,存在很多无用数据,
所以就会保留下数据需要的最小集合
3.RDB和AOF使用情景
RDB和AOF都有着自己的特点,它们之间可以相辅相成,两个一起使用的时候,安全级别是最高的,在RDB和AOF都开启的情况下,优先会选择AOF
项目中一般都是通过redis做缓存,所以不怕redis中的数据丢失,因为在mysql做了持久化,所以这种情况下redis的持久化机制可以不必开启,这样redis的性能也就提升了