Py学习  »  Redis

ioredis或(节点redis)回调在调用自定义redis命令/模块后未触发

Amer Harb • 5 年前 • 566 次点击  

在nodejs应用程序中使用websocket消息事件内的redis客户端(ioredis或node redis)时,不会立即触发任何命令的回调。(但操作确实发生在Redis服务器上)

奇怪的是,第一个命令的回调会在我发送第二条消息后触发,第二个命令的回调会在我发送第三条消息后触发。

wss.on('connection', (socket, request) => {

     socket.on('message', (data) => {

      console.log("will send test command")
      this.pubClient.hset("test10", "f1","v1", (err,value) => {
          //callback not firing first time
          console.log("test command reply received")
       })

    })

}

redis命令在应用程序的其他部分工作正常,甚至在如下所示的on连接中也能正常工作。

wss.on('connection', (socket, request) => {

    console.log("will send test command")
    this.pubClient.hset("test10", "f1","v1", (err,value) => {
        //callback fires
        console.log("test command reply received")
    })

    socket.on('message', (data) => {})
}

更新:

我都错了。奇怪的回调行为的原因是我的一个自定义redis模块没有返回回复。 这似乎导致了所有的回拨之后,这个呼叫似乎有某种一步延迟。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30827
 
566 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Amer Harb
Reply   •   1 楼
Amer Harb    5 年前

我都错了。奇怪的回调行为的原因是我的一个自定义redis模块没有返回回复。这似乎导致了所有的回拨之后,这个呼叫似乎有某种一步延迟。