Golang redigo hmset hset 问题

jackluo · 2015-05-11 12:41:22 · 8574 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2015-05-11 12:41:22 的主题,其中的信息可能已经有所发展或是发生改变。

哪位大牛能提供一个redigo 操作hmset 的例子,hmset 存的是结构体,弄了好几天了,官方的这个表示没有看懂 https://github.com/garyburd/redigo/issues/21


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

8574 次点击  
加入收藏 微博
1 回复  |  直到 2015-05-12 01:41:00
jackluo
jackluo · #1 · 10年之前
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)
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传