概览
Redis 的这两个命令都是用于创建当前数据库的备份。
因为 Redis 持久化默认选择 RDB 快照模式,所以 Redis 并不是实时的进行数据持久化,而是有一定的时间间隔。这个时候如果我们想要手动进行一次持久化,可以使用 save 或者 bgsave 命令。
SAVE
该命令将在 redis 安装目录中创建dump.rdb文件。
SAVE 直接调用 rdbSave函数 ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。如果数据量小,用此命令可能感觉不出有什么区别,但是当数据量很大的时候,就需要谨慎使用这个命令。
BGSAVE
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
虽然 BGSAVE 子进程写入 RDB 的工作不会阻塞主线程,但是会对机器的 CPU资源和内存资源造成影响,严重的情况下甚至会导致服务器宕机。