Linux学习-redis持久化之AOF和RDB
Posted 丢爸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习-redis持久化之AOF和RDB相关的知识,希望对你有一定的参考价值。
redis数据持久化
RDB
: ` bgsave开始会fork主进程得到子进程,子进程共享主进程的内存数据,完成fork后读取内存数据并写入RDB文件。
fork采用的是copy-on-write技术
. 当主进程执行读操作时,访问共享内存
. 当主进程执行写操作时,则会拷贝一份数据,执行写操作
`
# RDB会在什么时候执行
# 默认是服务停止时执行
# save 60 1000代表60秒内至少执行1000次修改则触发RDB
# RDB缺点
# RDB执行间隔时间长,两次RDB之前写入数据有丢失的风险
# fork子进程、压缩、写出RDB文件都比较耗时
//工作目录位置
dir /data/redis/
//redis持久化文件名称,此文件将存储在/data/redis/目录下
dbfilename test.rdb
# save <seconds> <changes>
#多长时间将数据保存至磁盘,如设置为save "",则禁用RDB
save 5 1
#是否开启压缩,建议不开户,压缩会消耗CPU资源
rdbcompression yes
AOF(Append Only File)追加文件
Redis处理的每一个写命令都会记录在AOF文件中,可以看做是命令日志文件
AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF
#是否开户AOF功能,默认no
appendonly no
#AOF文件名称
appendfilename "appendonly.aof"
#AOF命令记录的频率
#表示每执行一次写命令,立即记录到AOF文件
appendfsync always
#写命令执行完成先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,默认方案
appendfsync everysec
#写命令执行完成先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no
#注:因为AOF要记录的是redis命令,命令可能会有很多重复的,AOF文件比RDB文件大很多,通过bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。
#通过开户新的线程在后台来执行append only rewrite操作
127.0.0.1:6379> BGREWRITEAOF
Background append only file rewriting started
#Redis会在触发阈值自动去重写AOF文件,阈值在redis.conf配置中可以设置
#AOF文件比上次文件增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
#AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb
以上是关于Linux学习-redis持久化之AOF和RDB的主要内容,如果未能解决你的问题,请参考以下文章