Redis的各种机制

一、Redis的持久化机制

1.简介
Redis有两种持久化机制,分别是RDB和AOF,RDB:每个一段时间保存一个快照;AOF:保存每次写的操作指令;
2.RDB
(1)RDB的概念
RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,因为RDB的存在,那么重启redis后,则会恢复。
(2)备份与恢复
备份:内存备份 --> 磁盘临时文件
恢复:磁盘临时文件 --> 恢复到内存
(3)RDB优劣势分析
优势
a. 每隔一段时间全量备份(快照)
b. 灾备简单,可以远程传输
c. 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的的完整性
d. 相对AOF来说,当有更大文件的时候可以快速重启恢复
劣势
a发生故障是,有可能会丢失最后一次的备份数据
b.可能会造成CPU负担,因为子进程所占用的内存比会和父进程一模一样
c. 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了
(4)配置RDB持久化机制
修改redis.conf文件的关键信息

#快照文件名称
dbfilename "dump.rdb"
#redis工作目录,临时备份文件将会存在这个位置
dir "/usr/local/redis/working"
#至少发生了一次变化,会在900秒后保存
save 900 1 
#至少发生了10次变化,会在300秒后保存
save 300 10 
#至少发生了10000次变化,会在60秒后保存
save 60 10000
#如果save过程出错,是否停止写操作 yes:停止|no:不停止,一般使用yes
stop-writes-on-bgsave-error yes
#是否开启rdb压缩模式
rdbcompression yes
#压缩时,是否真的rdb进行校验
rdbchecksum yes

注意,如果使用RDB,可能会丢失最后一次备份的rdb文件,如果对于数据完整性关注度不高,可以忽略不计,如果数据完整性要求高,可以选择使用AOF持久化机制
3.AOF
(1)概念
a.以日志的形式来记录用户请求的写操作。只记录写操作
b. 文件以追加的形式而不是修改的形式
c. redis的aof恢复其实就是把追加的文件从开始到结尾读取执行写操作
(2)RDB优劣势分析
优势
a. AOF更加精确,可以以秒级别为单位备份,如果发生问题,也只会丢失最后一秒的数据,大大增加了可靠性和数据完整性
b.当数据太大的时候,redis可以在后台自动重写aof。当redis继续把日志追加到老的文件中去时,重写也是非常安全的,不会影响到客户端的其他操作
c. AOF 日志包含的所有写操作,会更加便于redis的解析恢复
d.以log日志形式追加,如果磁盘满了,会执行 redis-check-aof 工具

劣势
a.同一份数据,AOF更占内存
b. 针对不同的同步机制,AOF会比RDB慢,因为AOF每秒都会备份做写操作,这样相对与RDB来说性能就略低
c.AOF发生过bug,就是数据恢复的时候数据不完整,这样显得AOF会比较脆弱,容易出现bug

(3)配置AOF持久化机制
修改redis.conf文件的关键信息

# AOF 默认关闭,yes可以开启 
appendonly no
# AOF 的文件名 
appendfilename "appendon

你可能感兴趣的:(redis,redis)