1. RDB方式
在redis的安装目录的data下面有个dump.rdb文件,里面是全量的库数据,可以通过命令bgsave把文件里的数据刷到redis中,这个方式比较推荐,因为是fork了一个io进程来操作,不会卡。如果用save命令持久化,则使用的是主进程进行,这时如果set一个命令也会卡住。所以推荐用bgsave来操作。
配置文件中save(非上面的save命令):这里是用来配置触发 Redis的 RDB 持久化条件,也就是什么时候将内存中的数据保存到硬盘。比如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。
默认如下配置:
表示900 秒内如果至少有 1 个 key 的值变化,则保存save 900 1
表示300 秒内如果至少有 10 个 key 的值变化,则保存save 300 10
表示60 秒内如果至少有 10000 个 key 的值变化,则保存save 60 10000
不需要持久化,可以注释掉所有的 save 行来停用保存功能
但是一旦设置了主从,即使关了也会不起作用,因为主从就是通过dump.rdb来同步的。
2. AOF,append of file
类似把操作的命令追加进去,但是是以redis的协议稍微变了下格式,还是能看的懂的。AOF数据不容易丢失,最多也不会超过1秒,因为他1秒就会进行fsync操作。但是有个机制,会瘦身文件,比较set 了一个,又del,等于没有,就会瘦身rewrite文件。
AOF也有三种触发机制
- 每修改同步always:同步持久化 每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好,一般不用
- 每秒同步everysec:异步操作,每秒记录如果一秒内宕机,有数据丢失
- 不同no:从不同步
两种方式比较:
安全性:RDB比AOF比如容易丢数据,因为AOF最近也就丢1秒
轻重:RDB重,它是全量的物理数据
体积:RDB小,AOF大(全部的命令都在)
网友评论