TeamClass_MD/Go入门速成/Day3/Redis简单入门.md
2025-03-20 21:57:22 +08:00

2.1 KiB
Raw Blame History

1. 安装 Redis 客户端库

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

2. 连接 Redis

package main

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

var ctx = context.Background()

func main() {
    // 创建 Redis 客户端
    rdb := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379", // Redis 地址
        Password: "",              // 密码(没有则为空)
        DB:       0,               // 默认数据库
    })

    // 检查连接
    pong, err := rdb.Ping(ctx).Result()
    if err != nil {
        panic(err)
    }
    fmt.Println("Connected to Redis:", pong)
}

3. 基本操作

设置键值对

// 设置键为 "name",值为 "Alice"
err := rdb.Set(ctx, "yzk_study@163.com", "123456", 600).Err()
if err != nil {
    panic(err)
}

获取值

val, err := rdb.Get(ctx, "yzk_study@163.com").Result()
if err != nil {
    panic(err)
}
fmt.Println("His Verification code", val) // 输出: name: Alice

4. 数据结构操作

哈希Hashes

client.HMSet("user:1", map[string]interface{}{"name": "Bob", "age": 30})
// 获取哈希字段
age, err := client.HGet("user:1", "age").Int()
if err != nil {
	panic(err)
}
fmt.Println("User age:", age) // 输出: User age: 30

列表Lists

// 向列表尾部添加元素
rdb.RPush(ctx, "tasks", "task1", "task2")

// 获取列表范围
tasks, err := rdb.LRange(ctx, "tasks", 0, -1).Result()
fmt.Println("Tasks:", tasks) // 输出: Tasks: [task1 task2]

集合Sets

// 添加元素到集合
client.SAdd("tags", "golang", "redis")
// 检查元素是否存在
var exists bool
exists, err = client.SIsMember("tags", "golang").Result()
if err != nil {
	panic(err)
}

5. 设置过期时间

// 设置键值对10秒后过期
rdb.Set("temp_key", "expiring soon", 10*time.Second)

// 单独设置过期时间
rdb.Expire("temp_key", 10*time.Second)

6. 删除键

rdb.Del("name")

更详细文档参考:go-redis 官方文档