Golang redigo hmset hset 问题

本文分享了一次使用Golang进行Redis链表存储的实际经验,通过实例代码演示了如何设置和获取存储在Redis中的结构体数据。文章详细介绍了如何通过Golang连接Redis并进行HMSET操作,以及如何读取数据并扫描到结构体中。

最近公司项目,换到了golang 下面来开发,遇到了redis存储链表的问题,困扰了我好几天,后面静下心来,好好读了一下源码,发现官方的例子,最终还是羊毛出在羊身上

c, err := dial()
    if err != nil {
        panic(err)
    }
    defer c.Close()

    var p1, p2 struct {
        Title  string `redis:"title"`
        Author string `redis:"author"`
        Body   string `redis:"body"`
    }

    p1.Title = "Example"
    p1.Author = "Gary"
    p1.Body = "Hello"

    if _, err := c.Do("HMSET", redis.Args{}.Add("id1").AddFlat(&p1)...); err != nil {
        panic(err)
    }

    m := map[string]string{
        "title":  "Example2",
        "author": "Steve",
        "body":   "Map",
    }

    if _, err := c.Do("HMSET", redis.Args{}.Add("id2").AddFlat(m)...); err != nil {
        panic(err)
    }

    for _, id := range []string{"id1", "id2"} {

        v, err := redis.Values(c.Do("HGETALL", id))
        if err != nil {
            panic(err)
        }

        if err := redis.ScanStruct(v, &p2); err != nil {
            panic(err)
        }

        fmt.Printf("%+v\n", p2)
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值