Redis持久化
redis是一种高级键值对数据库,支持的数据类型很丰富,有字符串,链表,集合和有序集合,可以称之为数据结构数据库
Redis所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(半持久化)
如果没有配置持久化,redis重启后数据就会全消失,redis提供两种方式:一种是RDB持久化(原理是将 redis在内存中的数据库记录定时DUMp到磁盘上)另一种是AOF(原理是将redis操作日志追加的方式写入文件)
RDB & AOF
RDB持久化是☞指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作是FORK一个子进程,先将数据写入临时文件,写入成功后,再替换以前的文件,用二进制压缩存储(如图:)
AOF以日志形式记录每一个操作,查询操作不会记录,以文本的方式记录,可以打卡文件看到记录(如图:)
简单理解:
一个就是定时写入DUMP
一个是实时写入/bin/log
两者优缺点
RDB:
通过备份策略一旦出现故障,容易恢复
性能最大化
启动效率高
定时备份在做还原时可能会造成一部分数据丢失
如果数据集大,由于是通过子进程来完成备份,可能会停止服务器几秒钟来缓解压力
AOF:
有更高的数据安全型
如果日志过大,可以创建新文件来保障数据安全性
恢复速度不如RDB
AOF在运行效率上往往慢于RDB
简单来说,就是看需要是高性能还是高持久性来选择
(1)RDB配置
打开6379.conf文件,搜索save,可以看到三条信息(默认配置是打开的)
save 900 1 #15分钟内key的1个变化,则dump内存快照
save 300 10 #5分钟内key的10个变化,则dump内存快照
save 60 10000 #1分钟内key的10000个变化,则dump内存快照
#可根据需要配置这三条信息
(2)AOF配置
打开6379.conf文件,搜索appendfsync ,可以看到三条信息
修改最上面一行打开,第二行注释掉
appendfsync always
#appendfsync everysec
# appendfsync no
指定备份后的日志文件:
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"