我需要從 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 關注
- 273 瀏覽
添加回答
舉報
0/150
提交
取消