Go语言的Redis客户端(go-redis):完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

go-redis简介:Go语言强大的Redis客户端



Redis是一种高性能的内存键值存储数据库。它用于缓存、会话管理、消息队列、排行榜等众多场景。Go语言中有多个库可以与Redis交互,而go-redis(包github.com/redis/go-redis/v9)是最流行、维护最活跃且功能最丰富的库。



该库提供了简洁、地道的Go API,用于操作所有Redis数据结构(字符串、列表、集合、哈希、有序集合、HyperLogLog、流、地理空间数据),并支持集群、Sentinel、发布/订阅、管道(pipelining)和Lua脚本等高级功能。go-redis完全支持Redis 7和8。



在本指南中,我们将详细介绍安装、主要方法、常见错误,并编写一个实际的应用示例。



安装go-redis



使用标准命令go get进行安装:



go get github.com/redis/go-redis/v9


执行此命令后,您的go.mod文件中将出现该依赖项。请确保您已安装Go 1.18或更高版本。



您还需要一个正在运行的Redis服务器(本地或远程)。可以使用Docker启动Redis进行测试:



docker run --name my-redis -p 6379:6379 -d redis


快速入门:连接并发出第一个请求



创建一个main.go文件,编写一个简单的程序,连接Redis并写入和读取一个值。



package main

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

func main() { // 创建上下文(建议使用context.Background()) ctx := context.Background()

// 创建客户端 rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", // Redis服务器地址 Password: "", // 密码(如果有) DB: 0, // 数据库编号(默认0) })

// 使用Ping检查连接 pong, err := rdb.Ping(ctx).Result() if err != nil { panic(fmt.Sprintf("无法连接到Redis: %v", err)) } fmt.Println("已连接:", pong)

// 设置键"name"的值为"Alice" err = rdb.Set(ctx, "name", "Alice", 0).Err() if err != nil { panic(err) }

// 读取键"name"的值 val, err := rdb.Get(ctx, "name").Result() if err != nil { panic(err) } fmt.Println("name:", val)

// 程序结束时关闭连接 defer rdb.Close()}


运行程序:



go run main.go


您应该看到:



已连接: PONGname: Alice


go-redis的主要方法(8个以上)



go-redis的所有方法都返回一个*Cmd对象(或其特化类型),该对象具有.Result()方法用于获取结果和错误,.Val()方法仅获取值,.Err()方法仅获取错误。这允许灵活地处理结果。



1. Set — 设置键的值

功能:为指定键设置值。可以设置生存时间(TTL),或设置为0表示永久存储。

参数:

  • ctx context.Context — 用于控制执行时间的上下文
  • key string — 键名
  • value interface{} — 值(将被序列化)
  • expiration time.Duration — 生存时间(0表示无TTL)

示例:

err := rdb.Set(ctx, "                    

推荐