2.1 KiB
2.1 KiB
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 官方文档