go-redis Hash操作
–> go-redis List列表操作
–> go-redis String字符串操作
在Redis中,
hash 哈希被称为字典(dictionary),Redis的字典使用哈希表作为底层实现hash更适合用来存储对象,例如:user,name:张三,age:18 等。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | 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) } |