开发者学堂课程【Redis 入门到精通(进阶篇):持久化-bgsave 指令与工作原理】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13420
持久化-bgsave 指令与工作原理
内容介绍
一、数据量过大,单程执行方式造成效率过低如何处理?
二、RDB 启动方式——bgsave 指令
三、RDB 启动方式——bgsave 指令工作原来
四、RDB 启动方式——bgsave 指令相关配置
一、数据量过大,单程执行方式造成效率过低如何处理?
后台执行
谁:redis 操作者(用户)发起指令;redis 服务器控制指令执行
什么时间:即时(发起);合理的时间(执行)
干什么事情:保存数据
二、RDB 启动方式——bgsave 指令
1、命令
bgsave
2、作用
手动启动后保存操作,但不是立即执行
3、进行操作
右侧客户端:127.0.0.1:6379>set addr beijing
ok
127.0.0.1:6379>bgsave
Background saying started
//后台保存已经开始
127.0.0.1:6379>
左侧客户端:[root@localhost redis-4.0.0]# cd data
[root@localhost data]#ll
total 12
rw-r--r--.1 root root 5807 Oct 13 03: 39 6379. log
rw-r--r--1 root root 177 Oct 13 03:39 dump-6379. rdb
[ root@localhost data]# ll
total 12
rw-r--r--.1 root root 6067 Oct 13 03:47 6379. log
rw-r--r--.1 root root 191 Oct 13 03:47 dump-6379. rdb
[ root@localhost data] #
文件大小、时间、内容均发生改变,查看一下,cat dump-6379.drb,发现 age 后多了 addr。此时 bgsave 已经执行完毕,注意是在后台执行的。
三、RDB 启动方式——bgsave 指令工作原理
1、工作原理
据上图,当执行 bgsave 指令时,首先发送指令至 redis,接着会返回一个消息,即 Background saving started,此时没有真正执行;当返回消息时,会调用 fork 函数生成子进程,并不参与 redis 命令操作,而让它创建 rdb 文件同时做完这件事,做完后会返回消息至redis。
2、进行验证
查看日志文件 total 12
rw-r--r--.1 root root 6067 Oct 13 03:47 6379. log
rw-r--r--.1 root root 191 Oct 13 03:47 dump-6379. rdb
[ root@localhost data] # cat 6379.log
打开日志后发现 Background saving terminated with success
即会返回信息,若这个信息是控制台的话可以看见信息,在日志中变成这种格式。
3、注意:
bgsave 命令是针对 save 阻塞问题做的优化。Redis 内部所有涉及到 RDB 操作都采用 bgsave 的方式,save 命令可以放弃使用。
四、RDB 启动方式——bgsave 指令相关配置
1、dbfilename dump.rdb
2、dir
3、rdbcompressionyes
4、rdbchecksumyes
5、stop-writes-on-bgsave -error yes
说明:后台存储过程中如果出现错误现象,是否停止保存操作经验:通常默认为开启状态
经验:通常默认为开启状态