首页 > 解决方案 > 如何在golang中做Redis(redigo)lpop

问题描述

我需要从 redis 队列中做一个简单的 lpop 。在 go lang 如果我使用 blpop 使用阻塞弹出,那么下面的代码可以工作

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 

标签: goredis

解决方案


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

所以这行得通

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

推荐阅读