如何在golang进行Redis(redigo)lpop

如何在golang进行Redis(redigo)lpop,go,redis,Go,Redis,我需要从redis队列中执行一个简单的lpop。 在go lang中,如果我使用blpop使用阻塞pop,那么foll代码可以工作 reply, err := redis.Strings(conn.Do("BLPOP", key, 1)) if err == nil { fmt.Println(reply[1]) // do something with string reply[1] } 但我不想阻止。

我需要从redis队列中执行一个简单的lpop。 在go lang中,如果我使用blpop使用阻塞pop,那么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)) ie将BLPOP更改为LPOP,我收到一个redigo错误

ERROR = redigo: unexpected type for Strings, got type []uint8 
该命令返回一个两元素数组,其中第一个元素是键,第二个值是弹出的元素

该命令返回弹出的元素

使用字符串助手函数获取弹出的元素:

reply, err := redis.String(conn.Do("LPOP", key))
        if err == nil {         
           fmt.Println(reply)
        // do something with string reply
       }

我可以使用redis.String()获得lpop'ed值

所以这是有效的

reply, err := redis.String(conn.Do("LPOP", key))
    if err == nil { 
     fmt.Printf("REPLY= %s\n", reply)
      //do something 

不工作LPOP不采用超时选项I get this error=ERR'LPOP'命令的参数数目错误,如果我只传递2个参数,但仍然没有给我字符串输出对不起,这是一个复制粘贴错误,LPOP有额外的参数。固定的关键的一点是,对于返回单个值的命令,应该使用redis.String。