Go语言第三方 redis
库
github.com/go-redis/redis
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
"log"
)
func ConnectRedis() *redis.Client{
client := redis.NewClient(&redis.Options{
Addr: "192.168.4.240:6379",
Password: "",
DB: 0,
})
_, err := client.Ping(context.Background()).Result()
if err != nil {
log.Fatalln("请配置redis服务")
}
return client
}
type User struct {
Name string `redis:"name"`
Age int `redis:"age"`
Sex string `redis:"sex"`
}
// 在 redis 中存取结构化的数据只能使用 hash 类型
func main(){
conn := ConnectRedis()
//1、 以 map[string]interface{} 格式存取结构化对象
datas := map[string]interface{}{
"name":"张三",
"sex":"男",
"age":19,
"tel":12356789,
}
// 添加
conn.HMSet(context.Background(),"data",datas)
// 删除 data 这个 key 映射的数据
conn.Del(context.Background(),"data")
// 取出
result, _ := conn.HGetAll(context.Background(), "data").Result()
fmt.Println(result) // 输出 : map[age:19 name:张三 sex:1 tel:12356789]
fmt.Println(result["name"]) // 输出: 张三
fmt.Println(result["sex"]) // 输出: 男
//2、以结构体方式存取结构化对象
// 为 key 添加过期时间
conn.Expire(context.Background(),"user",5 * time.Minute)
// 添加 (key 相同,为每一个结构体字段赋值)
conn.HMSet(context.Background(),"user","name","李四")
conn.HMSet(context.Background(),"user","age",20)
conn.HMSet(context.Background(),"user","sex","男")
// 删除 整个 user 对象
conn.Del(context.Background(),"user")
// 取出
var obj User
conn.HGetAll(context.Background(), "user").Scan(&obj)
fmt.Println(obj) // 输出: {李四 20 男}
}