当前位置: 首页 > 面试题库 >

hget块内的hdel阻塞nodejs redis

陶淳
2023-03-14
问题内容

我正在尝试在hget块内的node.js中执行hdel命令。这是代码:

client.hget(requests[i], "client", function(err, client){
if(isUser == true){
    client.hdel(requests[i], function(err){
          if(err){
                 console.log("cannot process request");
              }
     });
    }
});

它不起作用,我不明白为什么!任何帮助将不胜感激。


问题答案:

由于您使用request [i]作为参数,因此我们可以假定此代码块被封装在循环中:也许您正在尝试对数组进行迭代并为每个项目执行hget / hdel。

在这种情况下,您很有可能会被Javascript的作用域规则所困扰:requests [i]是闭包的一部分,但是闭包只能在函数级别(而不是块级别)定义。

您可能需要定义一个内部函数,或使用forEach迭代您的容器



 类似资料:
  • 问题内容: 我读过某个地方,Java可以在大约12条机器指令中为对象分配内存。这对我来说非常令人印象深刻。据我了解,JVM使用的技巧之一是按块预分配内存。我认为,这有助于最大程度地减少对操作系统的请求数量,这是非常昂贵的。但是,即使是CAS操作,在现代处理器上也可能要花费多达150个周期。 那么,谁能在Java中解释内存分配的实际成本以及JVM使用哪些技巧来加快分配速度? 问题答案: JVM为每个

  • HDEL key field [field ...] 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。 注解 在Redis2.4以下的版本里, HDEL 每次只能删除单个域,如果你需要在一个原子时间内删除多个域,请将命令包含在 MULTI / EXEC 块内。 可用版本: >= 2.0.0 时间复杂度: O(N), N 为要删除的域的数量。 返回值: 被成功移除的域的数量,不包括被忽

  • HGET key field 返回哈希表 key 中给定域 field 的值。 可用版本: >= 2.0.0 时间复杂度: O(1) 返回值: 给定域的值。 当给定域不存在或是给定 key 不存在时,返回 nil 。 # 域存在 redis> HSET site redis redis.com (integer) 1 redis> HGET site redis "redis.com" #

  • 问题内容: 我怀疑这是不允许的,因为我收到“解析错误:语法错误,意外的T_IF输入…”错误。但是我找不到实现目标的方法。这是我的代码: 它的作用是在select元素中显示国家列表,并将United States设置为默认值。我不难过… 问题答案: 您将要使用 的 一个三元运算符,用作简化的IF / Else语句:

  • 我有一个顶点,它有一个处理程序,可以在事件循环线程中调用Vertx的Web客户端。实际的底层API调用是同步的还是异步的?它会阻塞我的事件循环线程吗?假设我的API调用需要30秒才能返回。 我是否需要用Vertx.execute阻塞(p-

  • 问题内容: 我有这段代码可以在Linux中从Serial读取,但是我不知道在读取SerialPort时阻塞和非阻塞之间有什么区别,在哪种情况下哪个更好? 问题答案: 您提到的代码是IMO编码和注释不当的代码。该代码不符合POSIX的可移植性惯例,如正确设置终端模式和POSIX操作系统的串行编程指南中所述。该代码没有提到它使用非规范(也称为原始)模式,并且重用了“阻塞”和“非阻塞”术语来描述 VMI