–> go-redis List列表使用详解
–> go-redis String字符串使用详解
–>go-redis Set集合使用详解
–>go-redis ZSet使用详解
在Redis中,
hash
哈希被称为字典(dictionary),Redis的字典使用哈希表作为底层实现hash更适合用来存储对象,例如:user,name:张三,age:18 等。。。
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)
}