Go Redis конвертирует результат HGetAll в структуру - PullRequest
0 голосов
/ 01 августа 2020

Я получаю данные из redis.HGetAll, но не нашел чистого способа преобразовать результат в мою Struct

var object struct {
    x int
}

result := redisClient.HGetAll(context.Background(), "the_h_key")

//TODO import the result content into the object 

Есть ли какая-нибудь функция для этого впечатляющего случая?

Для теперь я использую пакет json (marshal, затем UnMarshal to struct ".

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

Результатом Redis является строка [строка] карты. Для каждого поля в структуре получите значение из карты, преобразуйте строку в тип поля и назначьте полю.

 var o object
 var err error

 o.x, err = strconv.Atoi(m["x"])
 if err != nil {
      // handle the error
 }

 ... repeat for other fields as needed
1 голос
/ 01 августа 2020

Если ваша структура данных не слишком сложна, один из удобных способов сохранить данные с помощью redis - использовать jsons. Просто json.Marhsal() свою структуру и сохраните ее как строку, а затем json.Unmarshal() эту строку обратно в свою структуру.

...