为什么我的redis命令键不阻止我的其他操作

4xrmg8kj  于 2022-11-21  发布在  Redis
关注(0)|答案(2)|浏览(153)

从许多博客中,我了解到redis命令keys *可能阻塞redis服务器,并且其它命令不能按时执行。
但是,今天我在我的数据库上运行了keys *,它有大约800万数据。然后我用我的另一个客户端执行其他命令,如getset,这一切都工作得很好,并及时给予响应。
所以,我很困惑为什么我的命令keys不阻塞。
图片是https://i.stack.imgur.com/8flt4.png

pzfprimi

pzfprimi1#

KEYS ( 和 几乎 任何 其他 Redis 命令 ) * * 是 * * 阻塞 , 不要 被 愚弄 : )
当 Redis 扫描 内部 字典 并 组装 响应 时 , 它 会 被 阻塞 。 但是 , 当 响应 准备 好 并 被 移动 到 网络 层 后 , 服务 器 就 可以 自由 地 处理 下 一 个 操作 了 。 与 此 同时 , 客户 端 从 发送 KEYS 开始 直到 收到 整个 响应 都 被 阻塞 。

9cbw7uwe

9cbw7uwe2#

关于阻塞命令的有趣事实是,它们并不阻塞整个服务器,而只是阻塞调用它们的客户端。https://redis.io/docs/reference/modules/modules-blocking-ops/

相关问题