首页 文章 go-redis使用之Hash字典
go-redis使用之Hash字典
编辑时间:2023-10-28 20:00:45 作者:dashizi 浏览量:118

func GetRedisClient()*redis.Client{

return redis.NewClient(&redis.Options{

Addr:               "localhost:6379",

Password:           "",

DB:                 0,

})

}


// redisHash Hash散列表操作

func redisHashTest(cli *redis.Client){

// 单个key-value值:HSet/HGet

cli.HSet("user","name","新垣结衣")

name1,err:=cli.HGet("user","name").Result()

if err != nil {

panic(err)

}

fmt.Printf("name1:%v\n",name1) // 新垣结衣


// 多个key-value值:HMSet、HMGet

m:=make(map[string]interface{})

m["age"]=18

m["address"]="Japan"

str,err:=cli.HMSet("user",m).Result()

if err != nil {

panic(err)

}

fmt.Println(str) // ok

s1,err:=cli.HMGet("user","name","age","address").Result()

if err != nil {

panic(err)

}

for _, v := range s1 {

fmt.Println(v) // 新垣结衣 18 Japan

}


// 获取hash中的全部数据

m1,err:=cli.HGetAll("user").Result()

if err != nil {

panic(err)

}

for k, v := range m1 {

fmt.Printf("key:%v value:%v\n",k,v)

//key:name value:新垣结衣

//key:age value:18

//key:address value:Japan

}


// 获取所有key

s2,err:=cli.HKeys("user").Result()

if err != nil {

panic(err)

}

for _, s := range s2 {

fmt.Println(s) // [name age address]

}


// 获取所有value

s3,err:=cli.HVals("user").Result()

if err != nil {

panic(err)

}

fmt.Println(s3) // [新垣结衣 18 Japan]


// 删除hash中指定的key,对应的value也就没了(可以同时删除多个)

cli.HDel("user","address","age")

fmt.Println(cli.HGetAll("user").Val()) // map[name:新垣结衣]


//获取Hash的内容长度

n:=cli.HLen("user").Val()

fmt.Printf("长度为:%d\n",n) // 长度为:1


//判断hash中是否存在指定的key

b1:=cli.HExists("user","name").Val() //true

b2:=cli.HExists("user","hobby").Val() //flase

fmt.Println(b1,b2)


// HSetNX:保存一个key-value,如果存在field,则失败,不存在新建并存储

fmt.Println(cli.HGetAll("user").Val())

b3,err:=cli.HSetNX("user","name","石原里美").Result()

if err != nil {

panic(err)

}

fmt.Println(b3) // false 保存失败

b4,err:=cli.HSetNX("user","city","北京").Result()

if err != nil {

panic(err)

}

fmt.Println(b4) // true 保存成功

fmt.Println(cli.HGetAll("user").Val()) // map[city:北京 name:新垣结衣]


}


func main(){

rdb:=GetRedisClient()

defer rdb.Close()

pong:=rdb.Ping().Val()

fmt.Printf("数据连接状态:%v\n",pong) // 数据连接状态:PONG


// redisStringTest(rdb)


// redisListTest(rdb)


redisHashTest(rdb)

}


来说两句吧
最新评论