所谓持久化,其实就是一种机制,它能够 将内存中的数据库状态保存到磁盘 中,从而防止服务器宕机导致内存数据丢失。Redis 的 数据都是存在内存中 的,一旦出现宕机等情况,所有数据将会丢失,而持久化机制则是为了应对这一突发故障而提出的机制。
要进行持久化,都是由客户端发起请求,然后再到服务器真实地写入磁盘中,一般需要经过如下步骤:
fork()
,产生一个子进程;fork
一个子进程,然后将持久化的工作交给子进程,而主进程无需进行相关的 I/O 操作;fork()
产生子进程进行数据的持久化,一旦数据过大就会消耗一定时间,造成 Redis 停止服务几毫秒甚至更久;# RDB 文件名,默认 dump.rdb
dbfilename dump.rdb
# 文件存放目录,默认为当前工作目录
dir ./
# 保存点,假设为每 60s,数据发生 1000 次以上变动
save 60 1000
# 持久化出错,主进程是否停止希尔
stop-writes-on-bgsave-error yes
# 数据是否压缩
rdbcompression yes
# 数据是否校验
rdbchecksum yes
会阻塞当前 Redis 服务器,直到持久化完成,对于线上要禁止使用;
fork
一个子进程,由子进程负责持久化进程,因此阻塞只会发生在 fork
子进程的过程中;
bgrewriteaof
)或自动触发;# 是否开启aof
appendonly yes
# 文件存放目录,与 RDB 公用,默认为当前工作目录
dir ./
# 文件名称,默认为 appendonly.aof
appendfilename "appendonly.aof"
# 同步方式
# appendfsync always
appendfsync everysec
# appendfsync no
# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 加载aof时如果有错如何处理
aof-load-truncated yes
# 文件重写策略
aof-rewrite-incremental-fsync yes
以上就是 Redis 持久化的相关内容了,首先讲了什么是持久化,然后讲了持久化的过程,最后则是 Redis 中持久化的两种方式:RDB + AOF。
创作不易,如果你觉得本文对你有所帮助,那就帮忙点个赞再走吧!