Redis持久化
■持久化概述
●Redis是运行在内存中,内存中的数据断电丢失
●为了能够重用Redis数据,或者防止系统故障,我们需要将Redis
中的数据写入到磁盘空间中,即持久化
■持久化分类
重点
● RDB方式:创建快照的方式获取某一时刻Redis中所有 数据的副本
●AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记
录数据的变化
RDB:占用资源少,不需花费大量服务器资源
AOF:专门开一个进程,随时进行数据保存,读写同步进行,——类似增量备份,但是占用更大资源,重启服务时,要进行同步数据,启动时间慢,等待时间长。服务器突然关机,不怕数据丢失。不执行最后一条语句
RDB持久化2-1
■Redis的默认持久化方式
■默认文件名dump.rdb
■触发条件
●在指定的时间间隔内,执行指定次数的写操作(配置文件控制)
●执行save或者是bgsave (异步) 命令
●执行flushall命令,清空数据库所有数据
●执行shutdown命令,保证服务器正常关闭且不丢失任何数据
■Redis的默认持久化方式
■默认文件名dump.rdb
■触发条件
,在指定的时间间隔内,执行指定次数的写操作(配置文件控制)
●执行save或者是bgsave(异步) 命令
执行flushall命令,清空数据库所有数据
●执行shutdown命令,保证服务器正常关闭且不丢失任何数据
shutdown save最安全的数据保存方式
●适合大规模的数据恢复
●如果业务对数据完整性和一致性要求不高,RDB是很好的选择
●数据的完整性和一致性不高
●备份时占用内存
RDB启动方式:
save指令 手动执行一次拍照
●dbfilename dump.rdb
说明:设置本地数据库文件名,默认值为dump.rdb
经验:通常设置为dump-端口号.rdb
●dir
说明:设置存储.rdb文件的路径
经验:通常设置成存储空间较大的目录中,目录名称data
●rdbcompressionyes
说明:设置存储至本地数据库时是否压缩数据,默认为yes,采用LZF压缩
经验:通常默认为开启状态,如果设置为no,可以节省CPU运行时间,但会使存储的文件变大(巨大)
●rdbchecksum yes
说明:设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行
经验:通常默认为开启状态,如果设置为no,可以节约读写性过程约10%时间消耗,但是存储一定的数据损坏风险
save 按顺序保存,容易阻塞服务器
bgsave 手动启动后台保存操作,但是不是立即执行
注意: bgsave命令 是针对save阻塞问题做的优化。Redis内部所有涉及到RDB操作都采用bgsave的方式,save命令可以放弃使用。
save second changes
作用: 满足限定时间范围内key的变化达到指定数量进行持久化
参数 second: 监控时间范围 changes:监控key的变化量
●全量复制
在主从复制中详细讲解
●服务器运行过程中重启
debug reload
●关闭服务器时指定保存数据
shutdowm save
AOF数据持久化
■Redis默认不开启
■弥补RDB的不足(数据的不一致性)
■采用日志的形式来记录每个写操作,并追加到文件中
■Redis重启会根据日志文件的内容将写指令从前到后执
行一次以完成数据的恢复工作
■AOF的重写机制
●AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越
来越多
●当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件
的内容压缩
■AOF重写的原理
●Redis会fork出一条新进程,读取内存中的数据(并没有读取旧
文件),并重新写到-一个临时文件中,最后替换旧的aof文件
AOF重写
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了 AOF重写机制压缩文件体积。AOF文件重
写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一一个数据的若干个条命令执行结
果转化成最终结果数据对应的指令进行记录。
AOF重写作用
●降低磁盘占用量,提高磁盘利用率
●提高持久化效率,降低持久化写时间,提高IO性能
●降低数据恢复用时,提高数据恢复效率
■AOF的重写配置
vim /etc/redis/6379.conf
#在日志进行BGREWRITEAOF时,如果设置为yes表示新写操作不进行同步fsync,只是
暂存在缓冲区里,避免造成磁盘I0操作冲突,等重写完成后在写入。redis中默认为no
no-appendfsync-on-rewrite no
#当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生BGREWRITEAOF操作
auto-aof-rewrite-percentage 100
#当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺
寸较小导致频繁的BGREWRITEAOF
auto-aof-rewrite-min-size 64mb
# appendfsync always 每次写入操作均同步AOF
appendtsync everysec 每秒在系统宕机情况下1秒钟的数据
# appendfsync no 系统控制
aof-load-truncated yes
#在日志进行BGREWRITEAOF时,如果设置为yes表示新写操作不进行同步fsync,只是
暂存在缓冲区里,避免造成磁盘I0操作冲突,等重写完成后在写入。redis中默认为no
no-appendfsync-on-rewrite no 默认是no
#当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生BGREWRITEAOF操作
auto-aof-rewrite-percentage 100
#当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺
寸较小导致频繁的BGREWRITEAOF
auto-aof-rewrite -min-size 64mb
AOF重写方式
●手动重写
bgrewriteaof
●自动重写
auto-aof- rewrite-min-size size
auto-aof-rewrite-percentage percentage
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。