当前位置: 首页 > news >正文

Go 连接 Redis 代码详细解析

下面这段代码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 用于测试连接
http://www.zskr.cn/news/1315474.html

相关文章:

  • 【技术底稿 37】Spring Boot 3.x 自动装配 “死锁” 排查:3 个注解实现条件化装配与 Mock 兜底
  • 简历投了全石沉大海?实测3个免费AI简历神器,HR秒通过、面试翻3倍!
  • 告别硬编码延时!用Vector CAPL定时器实现汽车总线报文精准周期发送
  • DouyinLiveRecorder:构建多平台直播录制系统的核心技术解析
  • Cortex-M中断优先级配置与优化实践
  • 对比自行维护多个API,使用Taotoken聚合端点的稳定性观感
  • CVE、CNNVD、CNVD傻傻分不清?一文搞懂主流漏洞库的区别与实战用法
  • 遗传算法GA-核心机制与实战流程图解
  • Claude Code开发者大会系列5:如何打造“AI原生工程师”文化
  • 从Upstart到Systemd:Ubuntu服务自启配置的演进与实战解析
  • 别再只盯着loss了!YOLOv8早停(Early Stopping)参数patience的保姆级设置与调优指南
  • 从PDF到CDF:用NumPy和SciPy搞定概率计算,避开统计建模的常见坑
  • Qt开发避坑指南:QRegularExpression正则匹配从入门到实战(附常见错误排查)
  • 从抽象到具象:图灵机原理与树莓派实践
  • 深入杰理AC701N芯片:拆解可视化SDK中蓝牙模式与消息分发的底层逻辑
  • AKShare:5分钟掌握Python金融数据获取的终极解决方案
  • ZYNQ启动太慢?从FSBL到U-Boot的完整性能分析与优化实战
  • 在银河麒麟V10 SP3上搞定MySQL 8.0.33:保姆级安装与避坑全记录
  • Allegro PCB设计避坑指南:图解Margin、Delta、Tolerance,搞定DDR等长布线
  • 模数转换动态范围优化与无限采样技术解析
  • 基于STM32 HAL库的直流有刷电机PWM调速与PID闭环控制实战
  • 3步掌握SRWE:Windows窗口分辨率自定义的终极指南
  • USB HID键盘注入攻击:从微控制器模拟到物理安全防御
  • ARMv8存储指令解析:STUR与STXR原理与应用
  • Arm Cortex-R82AE外部寄存器与调试追踪技术详解
  • ASPICE SWE.4单元验证实战:从测试思维到系统性过程保障
  • HAL库ADC采样避坑指南:当常规通道开DMA,为什么我的注入通道数据不更新了?
  • 成就电子电路设计高手(一),电子电路设计原则+方法+步骤
  • 2026年口碑好的线路板污水处理/工业污水处理/含氟污水处理/南京高难度污水处理优质厂家推荐榜 - 行业平台推荐
  • 【NotebookLM林业科研提效指南】:3大AI笔记工作流重构传统林学研究范式