亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 redis 獲取結構數組時解組錯誤

從 redis 獲取結構數組時解組錯誤

Go
胡子哥哥 2023-07-17 17:09:14
我用來redigo在 redis 中保存一些結構。問題是,對于同一個鍵,我需要附加新的結構,但是當我嘗試恢復它們時,我無法將其解組到數組。即:(故意忽略錯誤)type ADTO struct {    Value string}func main() {    pool := redis.Pool{        Dial: func() (conn redis.Conn, e error) {            return redis.Dial("tcp", "localhost:6379")        },        MaxIdle:   80,        MaxActive: 12000,    }    conn := pool.Get()    defer conn.Close()    key := "some-key"    defer conn.Do("DEL", key)    a := ADTO{Value: "a"}    bytes, _ := json.Marshal(a)    conn.Do("APPEND", key, bytes)    b := ADTO{Value: "b"}    bytes, _ = json.Marshal(b)    conn.Do("APPEND", key, bytes)    c := ADTO{Value: "c"}    bytes, _ = json.Marshal(c)    conn.Do("APPEND", key, bytes)    bytes, _ = redis.Bytes(conn.Do("GET", key))    adtos := make([]ADTO, 0)    // the following does not work    if err := json.Unmarshal(bytes, &adtos); err != nil {        return    }}如果我只附加一個結構并檢索它,那么它工作正常我嘗試過redis.ByteSlices但沒有運氣
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

APPEND 只會附加到字符串,不會生成 JSON 數組。第一次插入后,你會得到


{"Value":"a"}

然后在第二個之后,你就會有


{"Value":"a"}{"Value":"b"}

那不是 JSON 數組。


您可以嘗試使用 json.Decoder,并執行以下操作:


b, _ = redis.Bytes(conn.Do("GET", key))

dec := json.NewDecoder(bytes.NewReader(b))

items := []ADTO{}

var x ADTO

for dec.Decode(&x) == nil {

  items = append(items, x)

}


查看完整回答
反對 回復 2023-07-17
  • 1 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號