安装go-redis包
go get github.com/redis/go-redis/v9
连接 redis 服务
- 使用 options 方式
package main
import "github.com/redis/go-redis/v9"
func main(){
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
res, err := rdb.Ping(ctx).Result()
if err != nil {
panic(err)
}
fmt.Println(res)
}
- 使用 dns 字符串方式
package main
import "github.com/redis/go-redis/v9"
func main(){
// 注意 redis 是没有用户的,所以user 设置为空
opt, err := redis.ParseURL("redis://<user>:<pass>@localhost:6379/<db>")
if err != nil {
panic(err)
}
rdb := redis.NewClient(opt)
res, err := rdb.Ping(ctx).Result()
if err != nil {
panic(err)
}
fmt.Println(res)
}
- 连接 redis 服务设置连接名字
package main
import "github.com/redis/go-redis/v9"
func main(){
// 注意 redis 是没有用户的,所以user 设置为空
opt, err := redis.ParseURL("redis://<user>:<pass>@localhost:6379/<db>")
if err != nil {
panic(err)
}
rdb := redis.NewClient(opt)
res, err := rdb.Ping(ctx).Result()
if err != nil {
panic(err)
}
fmt.Println(res)
}
redis 数据类型
redis 的数据类型有五种,分别为: 字符串(string)、列表(list)、集合(set)、哈希(hash)、有序集合(zset)
操作字符串 (string)
- 获取字符串内容执行命令
redis 命令
get mykey
直接返回结果
key := "mykey"
ctx := context.Background()
val, err := rdb.Get(ctx, key).Result()
if err != nil {
panic(err)
}
fmt.Println(val)
保存命令并稍后分别访问值与错误
key := "mykey"
ctx := context.Background()
get := rdb.Get(ctx, key)
fmt.Println(get.Val())
执行go-redis包不支持的命令
key := "mykey"
ctx := context.Background()
val, err := rdb.Do(ctx, "get", key).Result()
if err != nil {
if err == redis.Nil {
fmt.Println("key dose not exists")
return
}
panic(err)
}
fmt.Println(val)
key := "mykey"
ctx := context.Background()
val, err := rdb.Do(ctx, "get", key).Text()
fmt.Println(val, err)
帮助函数完整列表:
s, err := cmd.Text()
flag, err := cmd.Bool()
num, err := cmd.Int()
num, err := cmd.Int64()
num, err := cmd.Uint64()
num, err := cmd.Float32()
num, err := cmd.Float64()
ss, err := cmd.StringSlice()
ns, err := cmd.Int64Slice()
ns, err := cmd.Uint64Slice()
fs, err := cmd.Float32Slice()
fs, err := cmd.Float64Slice()
bs, err := cmd.BoolSlice()
- 设置字符串数据
redis 命令
set mykey "ddd" EX 10
go-redis
key := "mykey"
ctx := context.Background()
cmd := rdb.Set(ctx, key, "ddd", 10)
fmt.Println(cmd.Result())
设置key到期的时间
expireAt := time.Now().AddDate(1, 1, 1)
args := redis.SetArgs{
ExpireAt: expireAt
}
fmt.Println(args)
ctx := context.Background()
err := rdb.SetArgs(ctx, "key", "hello", args).Err()
if err != nil {
panic(err)
}