文章目录
一. key的操作之get set
1. get、set去设置
// exampleClient redis连接客户端的代码
func exampleClient() {
rdb := redis.NewClient(redis.Options{Addr: "localhost:6379", Password: "", DB: 0})
err := rdb.Set(ctx, "key", "value", 0).Err()
if err != nil {
panic(err)
}
val, err := rdb.Get(ctx, "key").Result()
if err != nil {
panic(err)
}
fmt.Println("key", val)
val2, err := rdb.Get(ctx, "key2").Result()
if err == redis.Nil {
fmt.Println("key2 does not exist")
} else if err != nil {
panic(err)
} else {
fmt.Println("key2", val2)
}
}
2. 执行任意命令
go-redis 还提供了一个执行任意命令或自定义命令的 Do 方法,特别是一些 go-redis 库暂时不支持的命令都可以使用该方法执行。具体使用方法如下
// doCommand 基本的get set
func doCommand() {
rdb := redis.NewClient(redis.Options{Addr: "localhost:6379", Password: "", DB: 0})
ctx, cancel := context.WithTimeout(context.Background(), time.Hour)
defer cancel()
// 执行命令获取结果
val, err := rdb.Get(ctx, "key").Result()
fmt.Println("test1", val, err)
// 先获取到命令对象
cmder := rdb.Get(ctx, "key")
fmt.Println("test2", cmder.Val())
fmt.Println("test3", cmder.Err())
// 直接执行命令获取错误
// rdb.Set(ctx, "key", 10, time.Hour).Err()
err = rdb.Set(ctx, "key", 3000, 0).Err()
// 直接执行命令获取值
value := rdb.Get(ctx, "key").Val()
fmt.Println("test4", value)
}
3. redis.Nil
go-redis 库提供了一个 redis.Nil 错误来表示 Key 不存在的错误。因此在使用 go-redis 时需要注意对返回错误的判断。在某些场景下我们应该区别处理 redis.Nil 和其他不为 nil 的错误。
// exampleClient redis连接客户端的代码
func exampleClient() {
rdb := redis.NewClient(redis.Options{Addr: "localhost:6379", Password: "", DB: 0})
err := rdb.Set(ctx, "key", "value", 0).Err()
if err != nil