Redis windows学习(二)——Redis的AOF模式和RDB模式

来源:互联网 发布:四川大学网络教育好吗 编辑:程序博客网 时间:2024/06/18 17:02

AOF和RDB是什么

Redis进行操作时,有两种方式将操作的结果保存下来。一种是将结果以快照的方式保存在二进制文件中(默认叫:dump.rdb* ),这就是RDB模式,另一种是将操作的命令追加到一个记录文件里(默认叫:appendonly.aof),然后通过重新执行这些命令来重建数据库。通常,不用修改这些,按默认的来就好了,但是,了解一下还是有好处的,说不定面试就问这个呢?

RDB模式

在redis里,默认使用RDB模式。因为RDB模式重建数据库比较快。

这里的 重建数据库 是指将数据从硬盘移到内存,并建立起数据库的过程。对于RDB模式来说,就是把 dump.rdb 文件加载到内存,并解压字符串,就建立起了数据库。而对于AOF模式来说,则是在启动Redis服务器的时候,运行appendonly.aof日志文件,在内存中重新建立数据库。从这里的描述就可以看出,AOF的重建过程是要比RDB慢的。

使用RDB模式的话,系统会将内存中数据库的快照每隔一段时间间隔更新到硬盘中(dump.rdb 文件里),这个更新的频率是可以指定的。在redis.conf中有三个配置用来指定内存数据更新到硬盘的频率:

//格式是:save <seconds> <changes>save 900 1           //如果仅有1-9次更改操作,那么要900s才写入硬盘一次save 300 10          //如果仅有10-9999次更改操作,那么要300s才写入硬盘一次save 60 10000        //如果超过10000次更改操作,那么60s才会写入硬盘一次

900s,也就是15分钟,300s,就是5分钟。这个时间挺长的,这正是RDB模式的缺点所在——如果服务器宕机的话,可能会造成最后几分钟,保存在内存中还来不及刷入硬盘的数据丢失。如果数据很重要那就惨了。

但是,如果数据不是那么重要,丢失几分钟数据也没什么关系,那么RDB模式是最好的选择。

AOF模式

使用AOF模式是将操作日志记在appendonly.aof 文件里,每次启动服务器就会运行appendonly.aof 里的命令重新建立数据库。因为要重新运行命令,所以appendonly.aof 是比较慢的。所以,默认AOF模式是关闭的。你可以在redis.conf 文件里配置,使用appendonly yes 打开AOF模式。

AOF模式有三种追加到appendonly.aof 的方式,用来指定什么时机可以将操作日志追加到appendonly.aof 文件里。它们分别是:

方式 说明 always 每次执行写操作时都将操作记录追加到日志,安全,但比较慢 everysec 每秒钟将操作记录追加到日志,系统默认的方式,是一种权衡折衷,通常这种方式会比较好 no 让操作系统去决定什么时候追加,也许当操作系统有空的时候,速度快

相较于RDB,AOF模式是比较安全的,即使服务器宕机,丢失的数据也最多是一秒两秒的。所以,如果数据对安全性要求很高,那么用AOF吧。

另外,你可以同时指定这两种方式,运行的时候,它们各自按自己的方式办事,不冲突。但是启动的时候,是按AOF模式启动的,也就是运行appendonly.aof 文件。

这些东西,都是从redis.conf搬出来的,推荐去看一下,文件也不长,一共才490行,可以体会一下原汁原味的知识。

0 0
原创粉丝点击