如何在golang中做Redis(redigo)lpop

我需要从 redis 队列中执行一个简单的 lpop。在 go lang 中,如果我使用 blpop 使用阻塞弹出,则 foll 代码有效


reply, err := redis.Strings(conn.Do("BLPOP", key, 1))

        if err == nil {         

           fmt.Println(reply[1])


        // do something with string reply[1]


       }

但我不想阻止。我只需要在队列为空时结束。那么我该怎么做 如果我将redis.Strings(conn.Do("LPOP", key)) BLPOP 更改为 LPOP,我会收到 redigo 错误


ERROR = redigo: unexpected type for Strings, got type []uint8 


米脂
浏览 203回答 2
2回答

qq_笑_17

我可以使用 redis.String() 获取 lpop 值所以这有效reply, err := redis.String(conn.Do("LPOP", key))    if err == nil {      fmt.Printf("REPLY= %s\n", reply)      //do something 

慕田峪4524236

BLPOP命令返回一个双元素数组,其中第一个元素是键,第二个值是弹出的元素。LPOP命令返回弹出的元素。使用 String 辅助函数获取弹出的元素:reply, err := redis.String(conn.Do("LPOP", key))        if err == nil {                    fmt.Println(reply)        // do something with string reply       }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go