在生成 RDB 期间,Redis 可以同时处理写请求么?

在生成RDB期间,Redis的操作是分情况的。

如果你选择手动执行 SAVE 命令来生成 RDB 文件,那么Redis在生成RDB期间将不会处理其他任何客户端请求,也就是阻塞的。这是因为SAVE是一个同步操作,Redis会停止处理其他所有的客户端请求,直到快照生成完毕。

反之,如果你选择使用 BGSAVE 命令来生成 RDB 文件,BGSAVE 命令会在后台创建一个子进程来执行这个操作,父级的Redis进程可以继续处理客户端的各种请求,也就是非阻塞的。Redis通过创建子进程的方式进行持久化,是为了防止在进行持久化操作的时候阻塞所有的客户端请求。

当然,如果Redis在处理大量写请求时使用BGSAVE,由于都需要消耗一定的系统资源,可能会导致Redis响应其他请求的速度略有下降,但通常情况下不会造成明显影响,Redis还是可以同时处理写请求的。

发表评论

后才能评论