redis 持久化
Posted zhoupufelix的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 持久化相关的知识,希望对你有一定的参考价值。
一、什么是持久化
二、常见的持久化方式
三、redis 的持久化方式
- rdb快照持久化 (snapshoting)
- aof( append only file)
(1) redis -之rdb 快照持久化
工作原理:每隔N分钟或N次写操作后,从内存dump数据形成rdb文件,压缩放在备份目录(红色部分可以配置)
redis.conf中的参数
save 900 1 每900s修改过1个key就导出rdb
save 300 10 每300s修改过10个key就导出rdb
save 60 10000 每60s修改过10000个key就导出rdb
ps:通过时间和修改频次导出rdb文件,在短时间越频繁修改就越快导出。如果不想开启rdb 就注释这三项
stop-writes-on-bgsave-error yes 导出rdb的进程如果发生错误就停止主进程写操作
rdbcompression yes 使用LZF压缩rdb文件
rdbchecksum yes 存储和加载rdb文件时验证格式和兼容性
dbfilename dump.rdb 设置rdb文件名
dir ./ 设置工作目录,rdb文件会写入该目录,aof也会放入其中
rdb 缺陷
在2个保存点之间,断电,将会丢失1-N分钟的数据 (下次导出之前的数据丢失)
rdb总结:
(2) redis -之aof快照持久化 (2.4之后)
aof = append only file
原理:
redis 主进程command操作,
aof 进程将变化的操作写进文本文件中去。(记录日志)
redis.conf
#开启aof appendonly yes #正在导出rdb快照,不要同步aof no-appendfsync-on-rewrite no #同步频率 #appendfsync always(每一次修改都往磁盘上写) appendfsync everysec(每秒往磁盘上写) #appendfsync no (由操作系统分配写)
#
可以看到刚才我的操作已经被记录到了appendonly文件中了
aof 重写:由于同一个key可能有大量的操作,导致aof文件很大,所以在某个时间瞬间,根据key 的状态,逆化成命令再写入aof 文件中去,这样aof 文件的大小将变小。
#aof文件大小比起上次重写时的大小 增长率为100% 重写 (如1M 到 2M) auto-aof-rewrite-percentage 100 #aof文件至少超过64M时重写 避免前期数量较小不停的重写 auto-aof-rewrite-min-size 64mb
最后,aof和rdb可以一同使用,如果rdb 和 aof 同时存在 优先以aof恢复 数据。
以上是关于redis 持久化的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段