RDB持久化是把当前进程的数据已快照的形式保存到硬盘的过程。
save:阻塞式,内存较大的实例在执行过程中会造成长时间的阻塞,影响主进程上的正常服务请求。
bgsave:fork子进程,RDB持久化的过程在子进程中进行,完成后自动结束进程,并通知主进程。阻塞发生在fork阶段,时间较短。
################# SNAPSHOTTING ####################
# 触发自动保存条件 # save <seconds> <changes>
# save <秒> <修改次数>
# 900s有一次改变触发一次持久化
save 900 1
save 300 10
save 60 10000
# 设置保存快照失败时,是否停止redis命令写入
# 默认开启,拒绝所有写操作,保证内存和持久化数据一致
stop-writes-on-bgsave-error yes
# 是否在导出.rdb文件时采用LZC压缩
rdbcompression yes
#是都开启CRC64校验
rdbchecksum yes
# 保存数据库的文件名称
dbfilename dump.rdb
# 保存数据库的文件所在目录 dir ./
########################################
持久化失败的可能原因:fork子进程内存不足,或rdb所在文件夹没有写权限。
优点:
缺点:
AOF持久化是通过保存redis服务器执行的写命令来记录数据库状态。即当redis执行了写命令,该命令就会被追加到AOF文件末尾。
1 ############################## APPEND ONLY MODE ###############################
# 开启aof,默认关闭 appendonly yes
# 保持的文件名
appendfilename "appendonly.aof"
# 同步策略
# always 每次有新命令,就将缓冲区写入同步到AOF文件
# everysec(默认) 每秒写入并同步
# no 同步操作交给操作系统
appendfsync everysec
# 重写时是否继续写AOF文件(开启IO性能会影响redis性能)
no-appendfsync-on-rewrite no
# 是否忽略最后一条可能存在问题的命令(宕机会导致数据不完整)
aof-load-truncated yes
#################################################################################
1、命令追加到AOF缓冲区(减少硬盘IO开销);
2、缓冲区根据不同策略将数据同步到硬盘;
3、定期重写AOF文件,达到压缩目的;
1、手动触发:执行bgrewriteaof命令。
2、自动触发:当配置的条件同时满足时,自动执行AOF重写。
# AOF文件当前大小/上次重写时大小,默认比值100,即当前大小是基准大小的2倍
auto-aof-rewrite-percentage 100
# AOF文件的最小体积,默认64MB
auto-aof-rewrite-min-size 64mb
优点:
缺点:
原文:https://www.cnblogs.com/caster-xzn/p/10369363.html