HMSET

2020-04-15  本文已影响0人  NotFoundW

HMSET

  1. 使用结构体,为hash表添加字段。并利用结构体,将hash表的字段的值取出并赋值到结构体
  2. 使用普通命令,为hash表添加字段。取出字段的值后,以List的形式展示

Command

$ redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> hmset snake name kobe number 24 team lakers
OK
127.0.0.1:6379> hgetall snake
1) "name"
2) "kobe"
3) "number"
4) "24"
5) "team"
6) "lakers"

Code

func Hmset(c redis.Conn) {
    // Use struct as args to set fields and values of hash table. And once get values of fields, overwrite to another struct.
    type foxStruct struct {
        Name   string `redis:"name"`
        Number int    `redis:"number"`
        Team   string `redis:"team"`
    }

    snake := foxStruct{
        Name:   "kobe",
        Number: 0,
        Team:   "lakers",
    }

    defer c.Do("DEL", "snake")
    if _, err := c.Do("HMSET", redis.Args{}.Add("snake").AddFlat(&snake)...); err != nil {
        colorlog.Error(err.Error())
        return
    }
    v1, err := redis.Values(c.Do("HGETALL", "snake"))
    if err != nil {
        fmt.Println(err)
        return
    }
    var sameSnake foxStruct
    if err = redis.ScanStruct(v1, &sameSnake); err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println("sameSnake.Name:", sameSnake.Name)
    fmt.Println("sameSnake.Number:", sameSnake.Number)
    fmt.Println("sameSnake.Team:", sameSnake.Team)

    // Use normal command to set fields and values of hash table. And get the values as list.
    defer c.Do("DEL", "player")
    if _, err := c.Do("HMSET", "player", "name", "allen", "number", 3, "team", "76ers"); err != nil {
        colorlog.Error(err.Error())
        return
    }
    fieldsAndValues, err := redis.Strings(c.Do("HGETALL", "player"))
    if err != nil {
        colorlog.Error(err.Error())
        return
    }
    for i, v := range fieldsAndValues {
        if i%2 == 0 {
            fmt.Println("field", i/2, "is:", v)
        } else {
            fmt.Println("value of field", (i-1)/2, "is:", v)
        }
    }
}

Output

$ go run main.go
sameSnake.Name: kobe
sameSnake.Number: 0
sameSnake.Team: lakers
field 0 is: name
value of field 0 is: allen
field 1 is: number
value of field 1 is: 3
field 2 is: team
value of field 2 is: 76ers
上一篇 下一篇

猜你喜欢

热点阅读