news 2026/5/19 6:14:26

Go 连接 Redis 代码详细解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Go 连接 Redis 代码详细解析

下面这段代码:

packagemainimport("context""fmt""github.com/redis/go-redis/v9")varctx=context.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 main

packagemain

表示:

这是一个可执行程序

Go 里面:

只有:

packagemain

才能运行。


三、import 导入包

import("context""fmt""github.com/redis/go-redis/v9")

1. fmt

"fmt"

Go 标准库。

用于:

打印输出

例如:

fmt.Println("hello")

2. context

"context"

这个是:

上下文对象

很多新人:

第一次看到:

ctx

会懵。

实际上:

它本质上是:

请求生命周期管理器

Redis、MySQL、Gin:

现在很多库都要求传 context。


四、为什么 Redis 要 context

例如:

Redis 查询超时怎么办? 请求取消怎么办?

context 就是管理这些东西。


context.Background()

varctx=context.Background()

意思:

创建一个最基础的上下文

可以理解成:

先创建一个默认的上下文对象

后面:

Redis 操作都需要它。


五、github.com/redis/go-redis/v9

"github.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

当前电脑

6379

Redis 默认端口。

所以:

localhost:6379

意思:

连接本机 Redis

九、Password

Password:""

Redis 密码。

如果 Redis 没设置密码:

写空字符串

如果有密码:

Password:"123456"

十、DB

DB:0

Redis 有:

多个逻辑数据库

默认:

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 流程

程序:

发送: PING

Redis:

返回:

PONG

就像:

你在吗? 我在。

十四、这一行到底发生了什么

result,err:=rdb.Ping(ctx).Result()

拆开理解。


第一步

rdb.Ping(ctx)

向 Redis 发:

PING

第二步

.Result()

获取执行结果。


第三步

返回:

result err

result

Redis 返回的数据:

PONG

err

错误信息。

如果连接失败:

err!=nil

十五、为什么 Go 都返回 err

Go 里面:

很多函数:

都会:

返回 值+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 操作都会长这样

例如:


SET

rdb.Set(ctx,"name","zhangsan",0)

GET

rdb.Get(ctx,"name")

DEL

rdb.Del(ctx,"name")

你会发现:

所有操作都需要: rdb + ctx

因为:

rdb 是 Redis 客户端 ctx 是上下文

二十一、最后一句总结

这段代码本质:

创建 Redis 客户端 ↓ 连接 Redis ↓ 发送 PING 测试 ↓ 返回 PONG

真正核心:

rdb 是 Redis 操作对象 ctx 是上下文 Options 是连接配置 Ping 用于测试连接
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/19 6:13:04

Android 11 热点永不关闭的三种实现方案:从源码修改到API调用

Android 11热点持久化方案深度解析:从系统底层到应用层的完整实现 在移动设备开发领域,热点功能的稳定性与持久性一直是开发者关注的重点。Android 11系统默认的热点超时机制(10分钟无连接自动关闭)虽然考虑了节能因素&#xff0c…

作者头像 李华
网站建设 2026/5/19 6:09:01

从航拍到数据库:GIS技术在城市地块开发监测中的实战解析

1. 项目背景与核心需求 想象一下你站在城市边缘的一片空地上,四周是零星的建筑和杂草。两年后再次来到这里,眼前已经变成整齐的住宅楼和蜿蜒的道路。作为城市规划者,如何系统记录这种变化?这正是GIS技术在城市地块开发监测中的典型…

作者头像 李华
网站建设 2026/5/19 6:06:26

对比直接使用官方API,Taotoken的用量看板让成本更清晰

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,Taotoken的用量看板让成本更清晰 1. 从分散对账到统一视图的转变 在直接使用各家模型厂商的官方…

作者头像 李华
网站建设 2026/5/19 6:06:26

无线网卡监听模式:从原理到实战渗透测试

1. 无线网卡监听模式基础原理 当你用手机连接WiFi时,设备之间就像在开茶话会,而监听模式就是让你成为那个能听到所有人谈话的"隐形人"。无线网络通信本质上是通过无线电波广播传输数据,就像电台广播一样,理论上任何在信…

作者头像 李华
网站建设 2026/5/19 5:59:53

量子自适应自注意力机制(QASA)在Transformer中的应用与优化

1. 量子自适应自注意力机制的设计背景与核心思想Transformer模型在自然语言处理、计算机视觉等领域取得了革命性成功,但其核心组件——自注意力机制的计算复杂度随序列长度呈二次方增长(O(n)),成为制约模型效率的主要瓶颈。传统自…

作者头像 李华