Redis中SAVE和BGSAVE的区别
Posted jeemoze
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis中SAVE和BGSAVE的区别相关的知识,希望对你有一定的参考价值。
Redis的这两个命令都是用于创建当前数据库的备份。
因为Redis持久化选择RDB快照模式,所以Redis并不是实时的进行数据持久化,而是有一定的时间间隔。这个时候如果我们想要手动进行一次持久化,可以使用save或者bgsave命令。
SAVE
基本命令:
redis 127.0.0.1:6379> SAVE
OK
该命令将在 redis 安装目录中创建dump.rdb文件。
影响:
SAVE 直接调用 rdbSave函数 ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
如果数据量小,用此命令可能感觉不出有什么区别,但是当数据量很大的时候,就需要谨慎使用这个命令。
BGSAVE
基本命令:
127.0.0.1:6379> BGSAVE
Background saving started
客户端可以通过 LASTSAVE 命令查看相关信息,判断 BGSAVE 命令是否执行成功。
影响:
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
BGSAVE方式比较适合线上的维护操作。
恢复数据
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"
以上命令 CONFIG GET dir 输出的 redis 安装目录为 /usr/local/redis/bin。
以上是关于Redis中SAVE和BGSAVE的区别的主要内容,如果未能解决你的问题,请参考以下文章