go-redis 教程


安装go-redis包

go get github.com/redis/go-redis/v9

连接 redis 服务

  1. 使用 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)
}
  1. 使用 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)
}
  1. 连接 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)

  1. 获取字符串内容执行命令

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()
  1. 设置字符串数据

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)
}

文章作者: costalong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 costalong !
评论
  目录
国庆
快乐