Go Redis конвертирует результат HGetAll в структуру
Я получаю данные из redis.HGetAll
, но не нашел чистого способа преобразовать результат в мою структуру
var object struct {
x int
}
result := redisClient.HGetAll(context.Background(), "the_h_key")
//TODO import the result content into the object
Есть ли какая-нибудь функция у этого эффектного футляра?
Пока я использую json
package(marshal, затем UnMarshal to struct".
2 ответа
Результатом Redis является строка map[string]. Для каждого поля в структуре получите значение из карты, преобразуйте строку в тип поля и присвойте полю.
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
Если ваша структура данных не слишком сложна, один из удобных способов сохранить данные с помощью redis - использовать jsons. Толькоjson.Marhsal()
вашу структуру и сохраните ее как строку, а затем json.Unmarshal()
эту строку обратно в структуру.