Я что-нибудь упускаю? Я не могу найти пример базилика, просто подключите и установите значение, а затем получите то же значение. Без пула или кластера. Не могу понять даже, как подключиться к БД.
Я знаю, что для профессионалов в Голанге это все очевидно, но я первый разработчик на Go, и не все очевидно, и мне нужны примеры.
Примеры в godoc хорошо это объясняют.
https://godoc.org/github.com/gomodule/redigo/redis#pkg -examples
Вот как установить новое соединение:
https://godoc.org/github.com/gomodule/redigo/redis#example -Dial
И этот фрагмент показывает, как сначала написать, а затем прочитать строку:
https://godoc.org/github.com/gomodule/redigo/redis#example -String
Спасибо. Я хочу получить строки списка с ключами p_1:*
Вот мой код
conn, err := redis.DialURL("redis://172.17.0.1:6379")
defer conn.Close()
if err != nil {
panic(err.Error())
}
res, err := conn.Do("KEYS", "p_1:*")
if err != nil {
panic(err.Error())
}
res, err = redis.Values(conn.Do("MGET", res))
if err != nil {
panic(err.Error())
}
fmt.Println(res)
res
есть что-то похожее на массив байтов, когда я получаю ключи. Но я не могу получить эти ключи и значения.
Посмотрите документы, на которые я ссылался в своей предыдущей публикации, при чтении строки с помощью «GET» вы должны использовать функцию преобразования redis.String()
для преобразования результата байтов в строку Golang.
Во-первых, позвольте мне сказать, как я благодарен за ваше время.
Я просмотрел документы, но не могу их понять. Когда я получаю ключи, у меня есть результат. Но когда я MGET, у меня есть nil
Я не использую GET. Я использую KEYS, и это должно возвращать массив, поэтому, возможно, мне нужно преобразовать KEYS во что-то еще.
Не могли бы вы взглянуть на мой код и сказать, чего не хватает?
Ты хочешь:
keys, err := redis.Strings(conn.Do("KEYS", "p_1:*"))
if err != nil {
panic(err.Error())
}
for _, k := range keys {
fmt.Println(k)
}
@stevenh, да, ш может. ш может список ключей. Я не могу преобразовать этот список в соответствующий формат для использования MGET
преобразование не требуется, просто передайте результат, используя вариативное расширение, например
vals, err := redis.Values(conn.Do("HGET", keys...))