golang如何使用go-redis客户端_golang go-redis客户端使用教程

初始化 RDB 客户端需正确设置 Addr(Docker 中用 host.docker.internal 或宿主 IP)、显式调用 Ping 校验连接、Password 和 Username(ACL)不遗漏、使用带超时的 context;Set 过期时间必须为 time.Duration 类型;哨兵模式须用 NewFailoverClient 并配对 MasterName 与 SentinelAddrs;连接池参数需按压测调优,并强制健康检查。怎么初始化 rdb 客户端才不会连不上本地开发连不上 Redis,八成是 Addr 配错了或没启服务。默认地址 "localhost:6379" 看似简单,但 Docker 里跑 Go 程序时,localhost 指的是容器自己,不是宿主机;得换成 "host.docker.internal:6379"(Mac/Win)或宿主真实 IP(Linux)。另外,redis.NewClient 不会立即建连,只是配置好参数,真正校验要靠 rdb.Ping(ctx).Result() ------ 这一步必须做,否则后续操作失败时错误堆栈里根本看不出是连接问题。Addr 必须带端口,写成 "127.0.0.1:6379" 比 "localhost:6379" 更稳(避免 DNS 解析干扰)密码非空时,Password 字段不能漏,且不能多加空格;Redis 6+ ACL 用户需用 Username 字段显式指定别省略 ctx:用 context.Background() 可以,但生产环境建议传带超时的 context,比如 context.WithTimeout(ctx, 5*time.Second)rdb.Set 和 rdb.Get 的过期时间参数到底填什么rdb.Set(ctx, key, value, expiration) 第四个参数是 time.Duration,不是秒数也不是字符串。填 0 表示永不过期;填 time.Minute 或 5 * time.Second 才生效;填 60 是错的 ------ 它会被当成纳秒,实际过期时间几乎为零。常见误写:rdb.Set(ctx, "k", "v", 3600) → 实际设了 3600 纳秒过期,等同于立刻失效正确写法:rdb.Set(ctx, "k", "v", 1*time.Hour) 或 rdb.Set(ctx, "k", "v", time.Duration(3600)*time.Second)rdb.Get 返回 redis.Nil 错误表示 key 不存在,不是常规 error,要用 if err == redis.Nil 判断,别直接 panic(err)为什么哨兵模式下换主后请求还发到旧地址用 NewClient(&Options{Addr: "10.0.1.10:6379"}) 直连某个 Redis 实例,哪怕配了哨兵,go-redis 也完全不知道哨兵存在 ------ 它只会死磕这个地址。真要支持自动故障转移,必须用 redis.NewFailoverClient,且 MasterName 必须和哨兵配置中 sentinel monitor mymaster 的名字**完全一致(大小写敏感)**,SentinelAddrs 填的是哨兵节点地址(如 "10.0.1.10:26379"),不是 Redis 实例地址。错误示范:把 SentinelAddrs 写成 Redis 主节点地址,或只填一个哨兵节点(单点失效风险)推荐写法:SentinelAddrs: \[\]string{"10.0.1.10:26379", "10.0.1.11:26379", "10.0.1.12:26379"}连接成功后,可调 rdb.Info(ctx, "replication").Result() 看当前角色,验证是否真的连上了新主并发高时为啥总卡在 rdb.Get 上默认连接池大小是 CPU 核数 × 10,看着大,但若每个请求都新建 context 且不设超时,或 Redis 响应慢,连接池会迅速耗尽,后续请求就在 PoolTimeout 里排队。这不是代码写错了,是连接池参数没按压测结果调优。 Vozo Vozo是一款强大的AI视频编辑工具,可以帮助用户轻松重写、配音和编辑视频。

相关推荐
zmzmzmalo1 小时前
Linux ELF文件加载与内存管理揭秘
linux·网络·数据库
安_7 小时前
如何构建和使用向量索引?HNSW 和 IVF 有什么区别?
python·ai
Super 含8 小时前
Android 启动优化(五):线程、GC 与 IO 为什么会拖慢启动?
java·服务器·数据库
counting money8 小时前
Java IO流详解:从InputStream到文件操作实战
java·开发语言·python
ltl9 小时前
向量检索引擎选型:决策树、RAG 回链与开放问题
数据库
坚持学习前端日记9 小时前
Python SQLAlchemy ORM 从0到1精通实战手册(基础到复杂高阶)
数据库·python·oracle
灯澜忆梦9 小时前
【MySQL17】进阶篇 | InnoDB引擎
数据库·mysql
北斗落凡尘9 小时前
LangGraph 入门实战(11)--输出模式
后端·python·langchain
anxiao_m9 小时前
2026制造业云桌面选型攻略,不同生产场景适配方案汇总
大数据·网络·数据库
许彰午10 小时前
# 数据库配拦截器,不用改BPMN
数据库