- redis持久化机制
- RDB(Redis DataBase),数据集快照,在某个时间点将所有数据写入一个临时文件,持久化完成,该临时文件替换上次持久化文件。
- Redis默认采用LZF算法对生成的RDB文件做压缩处理,压缩后的文件远远小于内存大小,默认开启
优点:
①只有一个文件,dump.rdb,比较方便
②高性能,fork子进程完成写操作,主进程继续处理redis,保证了redis的高性能
③Redis加载RDB恢复数据远远快于AOF方式
缺点:
①数据安全系数低,redis故障时,还未持久化的数据会丢失
使用方式
①客户端向redis发送一个bgsave(win平台除外)
在后台异步(Asynchronously)保存当前数据库的数据到磁盘。
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程
原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出
②save命令,阻塞的保存快照,一般不推荐(如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用)
③配置 save 60 1000 ,代表60秒内有1000次调用,自动触发BGSAVE命令
④shutdown命令时,会执行save命令之后再关闭客户端
- AOF (Append-only file),将被执行的命令以增量的形式写在aof文件的末尾,所以,redis只要全部执行一遍aof的命令,即可恢复数据
优点
①数据安全,appendfsync可以设置每次执行,或每秒执行
缺点
①AOF文件比RDB文件要大,恢复速度也慢
为了解决文件过大,BGWRITEAOF命令可以重写aof文件,原理与快照相同,fork一个子进程来重写,
使用方式
①appendonly yes,默认不开启