Redis学习笔记---Redis持久化机制

前言:

我们都知道计算机在运行的时候,数据存放有两种方式,一种是存在内存,一种是存在硬盘上。
内存:高效,断电(关机)内存数据会丢失
硬盘::读写速度慢于内存,断电数据不会丢失

1. Redis使用的持久化机制(存储数据的方式)

(1)RDB

1) RDB:是redis的默认持久化机制。 RDB相当于照快照,保存的是一种状态。如果你有几十G数据 ,它能把它压缩为 几KB的快照
2)快照是默认的持久化方式,这种方式就是将内存中数据以快照的方式写入到二进制文件中,在我们redis底层默认存储的的文件名为 dump.rdb。
3) 优点:
快照保存数据极快,还原数据快。
适用于灾难备份
4) 缺点:
小内存机器不适合使用,RDB机制符合要求就会照快照
5) 快照产生的条件有以下两种:
[1] 服务器正常关闭是
通过命令行输入: ./bin/redis-cli shutdown
[2] key满足一定条件,会进行快照(这个在我们redis.conf有详细说明)
以vim redis.conf进入该文件,然后打上 /save
在这里插入图片描述
在这里插入图片描述

解释说明:
save 900 1 // 每900秒(15分钟)至少1个key发生变化,产生快照
save 300 10 // 每300秒(5分钟)至少10个key发生变化,产生快照
save 60 1000 // 每60秒(1分钟)至少10000个key发生变化,产生快照

(2)AOF

1)由于快照的方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照的所有修改。如果应用要求不能丢失任何修改的话,可以采用aof 持久化方式。
同样式以vim redis.conf进入该文件,并打上 /append (这里就是进行搜索)
在这里插入图片描述
2) Append-only file(aof): 从上面我们可以知道默认是没有打开的,这种aof比快照方式有更好的持久性,是由于在使用aof持久方式时,redis会将每一个收到的写命令都通过write 函数追加到文件中(默认是 appendonly.aof)。当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

 # 如果我们要使用aof的方式,应该把它启用
 appendonly yes  //启用aof持久化方式
3) 进行存储的三种方式(默认是:每秒fsync 一次)

在这里插入图片描述

appendfsync always  //收到写命令就立即写入磁盘,最慢,但是保证完全持久化
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
appendfsync no //完全依赖os,性能最好,持久化没保证
4) 产生问题

aof 的方式也同时带来了另一个问题。持久化文件变的越来越大。例如我们调用incr test 命令100次,文件中必须保存全部的100条命令,其中有99条是多余的。(aof比较消耗内存空间,而不是硬盘空间)

发布了51 篇原创文章 · 获赞 2 · 访问量 3729

猜你喜欢

转载自blog.csdn.net/TheWindOfSon/article/details/104401047