下面这段代码packagemainimport(contextfmtgithub.com/redis/go-redis/v9)varctxcontext.Background()funcmain(){rdb:redis.NewClient(redis.Options{Addr:localhost:6379,Password:,DB:0,})result,err:rdb.Ping(ctx).Result()iferr!nil{panic(err)}fmt.Println(result)}它的作用其实非常简单连接 Redis ↓ 测试 Redis 是否正常如果连接成功输出PONG一、整体运行流程整个程序执行流程程序启动 ↓ 创建 Redis 客户端 ↓ 连接 Redis ↓ 发送 Ping ↓ Redis 返回 PONG ↓ 打印结果二、package mainpackagemain表示这是一个可执行程序Go 里面只有packagemain才能运行。三、import 导入包import(contextfmtgithub.com/redis/go-redis/v9)1. fmtfmtGo 标准库。用于打印输出例如fmt.Println(hello)2. contextcontext这个是上下文对象很多新人第一次看到ctx会懵。实际上它本质上是请求生命周期管理器Redis、MySQL、Gin现在很多库都要求传 context。四、为什么 Redis 要 context例如Redis 查询超时怎么办 请求取消怎么办context 就是管理这些东西。context.Background()varctxcontext.Background()意思创建一个最基础的上下文可以理解成先创建一个默认的上下文对象后面Redis 操作都需要它。五、github.com/redis/go-redis/v9github.com/redis/go-redis/v9这是Go 操作 Redis 的官方主流库类似Gin 是 Web 框架 Gorm 是 ORM go-redis 是 Redis 客户端六、redis.NewClient()rdb:redis.NewClient(...)作用创建 Redis 客户端你可以理解成创建一个 Redis 连接工具后面所有 Redis 操作都通过rdb进行。七、redis.Options{}redis.Options{Addr:localhost:6379,Password:,DB:0,}这是Redis 连接配置类似MySQL 的 DSN八、Addr 是什么Addr:localhost:6379表示Redis 服务器地址localhost当前电脑6379Redis 默认端口。所以localhost:6379意思连接本机 Redis九、PasswordPassword:Redis 密码。如果 Redis 没设置密码写空字符串如果有密码Password:123456十、DBDB:0Redis 有多个逻辑数据库默认0~15总共16个库示例DB 0 DB 1 DB 2 ...为什么有多个 DB用于数据隔离例如DB用途0用户1缓存2验证码但真实开发很多公司只用 DB 0十一、rdb 到底是什么rdb:redis.NewClient(...)这里rdb本质是Redis客户端对象后面所有 Redis 操作都靠它。例如rdb.Set()rdb.Get()rdb.Del()十二、Ping 是什么result,err:rdb.Ping(ctx).Result()很多协议都有Ping作用测试连接是否正常十三、Redis Ping 流程程序发送 PINGRedis返回PONG就像你在吗 我在。十四、这一行到底发生了什么result,err:rdb.Ping(ctx).Result()拆开理解。第一步rdb.Ping(ctx)向 Redis 发PING第二步.Result()获取执行结果。第三步返回result errresultRedis 返回的数据PONGerr错误信息。如果连接失败err!nil十五、为什么 Go 都返回 errGo 里面很多函数都会返回 值err例如value,err:xxx()这是 Go 核心思想显式错误处理十六、panic(err)iferr!nil{panic(err)}意思如果发生错误 程序直接崩溃 并打印错误例如Redis 没启动会报connect refused十七、fmt.Println(result)fmt.Println(result)打印PONG说明Redis连接成功十八、整个底层流程真正理解main() ↓ 创建 context ↓ 创建 Redis 客户端 ↓ 根据 Addr 连接 Redis ↓ 发送 PING ↓ Redis 返回 PONG ↓ 打印结果十九、为什么很多教程第一步都是 Ping因为真正 Redis 操作之前必须先确认Redis能不能连上否则后面SET GET DEL都会失败。二十、后面 Redis 操作都会长这样例如SETrdb.Set(ctx,name,zhangsan,0)GETrdb.Get(ctx,name)DELrdb.Del(ctx,name)你会发现所有操作都需要 rdb ctx因为rdb 是 Redis 客户端 ctx 是上下文二十一、最后一句总结这段代码本质创建 Redis 客户端 ↓ 连接 Redis ↓ 发送 PING 测试 ↓ 返回 PONG真正核心rdb 是 Redis 操作对象 ctx 是上下文 Options 是连接配置 Ping 用于测试连接