Как сделать Redis (Redigo) LPO в Голанге - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно сделать простой lpop из очереди redis.In 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 ]

0 голосов
/ 12 сентября 2018

Я могу получить значение lpop, используя redis.String ()

, так что это работает

reply, err := redis.String(conn.Do("LPOP", key))
    if err == nil { 
     fmt.Printf("REPLY= %s\n", reply)
      //do something 
0 голосов
/ 11 сентября 2018

Команда BLPOP возвращает двухэлементный массив, в котором первый элемент является ключом, а второе значение - элементом popped.

Команда LPOP возвращаетэлемент popped.

Используйте вспомогательную функцию String для получения элемента popped:

reply, err := redis.String(conn.Do("LPOP", key))
        if err == nil {         
           fmt.Println(reply)
        // do something with string reply
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...