我需要从 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
2 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
我可以使用 redis.String() 获取 lpop 值
所以这有效
reply, err := redis.String(conn.Do("LPOP", key))
if err == nil {
fmt.Printf("REPLY= %s\n", reply)
//do something
慕田峪4524236
TA贡献1875条经验 获得超5个赞
BLPOP命令返回一个双元素数组,其中第一个元素是键,第二个值是弹出的元素。
LPOP命令返回弹出的元素。
使用 String 辅助函数获取弹出的元素:
reply, err := redis.String(conn.Do("LPOP", key))
if err == nil {
fmt.Println(reply)
// do something with string reply
}
- 2 回答
- 0 关注
- 202 浏览
添加回答
举报
0/150
提交
取消