HMSET
- 使用结构体,为hash表添加字段。并利用结构体,将hash表的字段的值取出并赋值到结构体
- 使用普通命令,为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
网友评论