Save与 BGSAVE 的区别
时间: 2023-09-12 09:07:34 浏览: 71
Redis持久化、主从与哨兵架构详解.pdf
SAVE 和 BGSAVE 都是 Redis 进行持久化操作的命令,但它们有以下几点不同:
1. 执行方式:SAVE 是同步执行的命令,会在执行期间阻塞 Redis 服务器进程;而 BGSAVE 是异步执行的命令,会在后台执行,不会阻塞 Redis 服务器进程。
2. 执行效率:因为 SAVE 是同步执行的命令,会在执行期间阻塞 Redis 服务器进程,所以它的执行效率比较低,尤其是在数据比较大的情况下。而 BGSAVE 是异步执行的命令,在后台执行,不会阻塞 Redis 服务器进程,所以它的执行效率比较高。
3. 操作方式:SAVE 命令会将整个数据集保存到磁盘上,如果数据集比较大,保存操作会比较耗时,同时也会占用比较多的磁盘空间。而 BGSAVE 命令则是通过 fork 函数创建一个子进程来进行持久化操作,子进程将数据写入磁盘,完成后再通知主进程,所以 BGSAVE 的操作方式相比 SAVE 更加高效。
4. 安全性:因为 SAVE 是同步执行的命令,会在执行期间阻塞 Redis 服务器进程,所以如果在 SAVE 执行期间 Redis 服务器进程异常退出,可能会导致数据丢失。而 BGSAVE 是异步执行的命令,在后台执行,不会阻塞 Redis 服务器进程,所以即使 Redis 服务器进程异常退出,也不会导致数据丢失。
阅读全文