我有类似的结构
type myStruct struct {
TotalCount int `json:"inventory_total_count"`
TotalPrice int `json:"inventory_total_price"`
GameList []string `json:"game_list"`
UserInfo UserInformation `json:"user_info"`
GameInventory map[string]InventoryGame `json:"inventory"`
}
type InventoryGame struct {
GameAssetsTotalCount int `json:"game_assets_total_count"`
GameAssetsTotalPrice int `json:"game_assets_total_price"`
GameID string `json:"gameid"`
Assets []InventoryAssets `json:"assets"`
}
type InventoryAssets struct {
ClassID string `json:"classid"`
InstanceID string `json:"instanceid"`
IconURL string `json:"icon_url"`
Name string `json:"name"`
MarketHashName string `json:"market_hash_name"`
AssetRarity string `json:"rarity"`
AssetBorderColor string `json:"border_color"`
AssetExterior string `json:"exterior"`
AssetQuality string `json:"asset_quality"`
AppID int `json:"appid"`
AssetPrice int `json:"asset_price"`
Marketable int `json:"marketable"`
AssetCount int `json:"item_count"`
AssetTotalCost int `json:"asset_total_price"`
}
创建后,我将其写入Redis存储,如下所示
err := client.Set(ctx, "key", myStruct, time.Minute)
// отработка err
然后我尝试得到这个结构如下
newStruct := myStruct{}
err := client.Get(ctx, "key").Scan(&newStruct)
// отработка err
结果,输出是一个空结构
{0 0 [] { } map[]}
附:注册了结构方法“MarshalBinary”和“UnmarshalBinary”。
我正在使用 go-redis/v9。
如何正确从 Redis 存储中检索结构?
我再次发现 go-redis 库内置了对序列化/反序列化的支持,以便此方法起作用:
您需要以正常方式为指定结构注册一个编组器和一个解组器
您需要按如下方式执行此操作:
我用自己的方式解决了这个问题,由于某种原因,这个方法对我不起作用:
正如人们向我建议的那样,有必要自己将结构转储为 JSON,并在从缓存调用时反序列化数据。我将代码移至单独的函数中。
用于向数据库添加结构/JSON 的代码。
从数据库获取数据的代码。