课程推荐 : https://www.lesscode.work/courses/info/61c91f19ce681.html
1 安装 redis 工具包
go get github.com/redis/go-redis/v9
go-redis 工具包官网
配置说明 :
https://redis.uptrace.dev/zh/guide/go-redis-option.html#redis-client
重要说明
go-redis 工具包会根据携程来调用连接池内的连接,我们在全局初始化一次 rdb 即可项目的各处使用连接池。
2 测试代码
package main
import (
"context"
"fmt"
"strconv"
"sync"
"time"
"github.com/redis/go-redis/v9"
)
func main() {
var wg sync.WaitGroup
ctx := context.Background()
// 初始化 redis 客户端
rdb := redis.NewClient(&redis.Options{
Addr: "192.168.1.102:6379",
Password: "", // 密码
DB: 0, // 使用的库
})
gotoTip:
// 开启多个进程
for i := 1; i <= 15000; i++ {
wg.Add(1)
go func(step int) {
defer func() {
wg.Done()
}()
// 设置数据
err := rdb.Set(
ctx,
"name"+strconv.Itoa(step),
"test"+strconv.Itoa(step),
time.Second*30,
).Err()
if err != nil {
fmt.Printf("err: %v\n", err)
} else {
// 获取数据
name, err := rdb.Get(ctx, "name"+strconv.Itoa(step)).Result()
if err == nil {
print(name)
} else {
fmt.Printf("err: %v\n", err)
}
}
}(i)
}
wg.Wait()
println("运行完毕")
time.Sleep(time.Second * 3)
// 循环执行
goto gotoTip
time.Sleep(time.Hour)
// rdb.Close()
}
在上面的代码中我们初始化了 redis 客户端并连接、操作了 redis,操作过程会新建 redis 连接,我们需要主动关闭连接吗?
由于 rdb 是全局初始化的,在执行命令过程中会形成连接池,go-redis 工具包会自动维护连接池,我们可以不必编写关闭逻辑代码。