在 Go 语言中使用 Redis 主要通过 Redis 客户端库进行操作。最常用的 Redis 客户端库是 go-redis

以下是一个简单的 Go 脚本,展示了如何连接 Redis 服务器并进行增、删、改、查等操作。

1. 安装 go-redis

首先,在项目中安装 go-redis 库:

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

2. 导入 Redis 包

在 Go 脚本中导入所需的包:

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

3. 创建 Redis 客户端和连接

使用 redis.NewClient() 来创建 Redis 客户端,并通过它连接到 Redis 服务器。

var ctx = context.Background()

// 创建 Redis 客户端
client := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379", // Redis 地址,默认是 localhost:6379
    Password: "",               // Redis 密码,如果没有可以为空
    DB:       0,                // 使用的数据库,默认是 DB 0
})

4. 基本的增、删、改、查操作

4.1 设置键值对(增)

通过 Set 方法设置一个键值对。

err := client.Set(ctx, "key", "value", 0).Err() // 0 表示没有过期时间
if err != nil {
    log.Fatalf("could not set key: %v", err)
}
fmt.Println("Key set successfully")

4.2 获取键值(查)

通过 Get 方法获取键对应的值。

val, err := client.Get(ctx, "key").Result()
if err != nil {
    log.Fatalf("could not get key: %v", err)
}
fmt.Printf("Value for key: %s\n", val)

4.3 删除键(删)

通过 Del 方法删除一个或多个键。

err := client.Del(ctx, "key").Err()
if err != nil {
    log.Fatalf("could not delete key: %v", err)
}
fmt.Println("Key deleted successfully")

4.4 更新键值(改)

Redis 不直接提供 "更新" 操作,因为通过 Set 方法覆盖原有的值即可。

err := client.Set(ctx, "key", "new_value", 0).Err() // 覆盖原有的值
if err != nil {
    log.Fatalf("could not update key: %v", err)
}
fmt.Println("Key updated successfully")

4.5 键是否存在(检查)

通过 Exists 方法检查一个或多个键是否存在。

exists, err := client.Exists(ctx, "key").Result()
if err != nil {
    log.Fatalf("could not check if key exists: %v", err)
}
if exists == 1 {
    fmt.Println("Key exists")
} else {
    fmt.Println("Key does not exist")
}

4.6 设置键的过期时间

可以通过 Expire 方法为键设置过期时间,单位是秒。

err := client.Expire(ctx, "key", 60).Err() // 设置 60 秒后过期
if err != nil {
    log.Fatalf("could not set expiration: %v", err)
}
fmt.Println("Expiration set successfully")

5. 完整示例代码

package main

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

var ctx = context.Background()

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

    // 设置键值
    err := client.Set(ctx, "key", "value", 0).Err()
    if err != nil {
        log.Fatalf("could not set key: %v", err)
    }
    fmt.Println("Key set successfully")

    // 获取键值
    val, err := client.Get(ctx, "key").Result()
    if err != nil {
        log.Fatalf("could not get key: %v", err)
    }
    fmt.Printf("Value for key: %s\n", val)

    // 删除键
    err = client.Del(ctx, "key").Err()
    if err != nil {
        log.Fatalf("could not delete key: %v", err)
    }
    fmt.Println("Key deleted successfully")

    // 更新键值
    err = client.Set(ctx, "key", "new_value", 0).Err()
    if err != nil {
        log.Fatalf("could not update key: %v", err)
    }
    fmt.Println("Key updated successfully")

    // 检查键是否存在
    exists, err := client.Exists(ctx, "key").Result()
    if err != nil {
        log.Fatalf("could not check if key exists: %v", err)
    }
    if exists == 1 {
        fmt.Println("Key exists")
    } else {
        fmt.Println("Key does not exist")
    }

    // 设置键的过期时间
    err = client.Expire(ctx, "key", 60).Err()
    if err != nil {
        log.Fatalf("could not set expiration: %v", err)
    }
    fmt.Println("Expiration set successfully")
}

6. 运行代码

确保 Redis 服务正在运行,默认端口为 6379,然后通过以下命令运行 Go 程序:

go run main.go

7. 其他操作

  • 列表操作(List)

    • LPush:在列表的左侧推送元素。
    • RPush:在列表的右侧推送元素。
    • LPop:从列表的左侧弹出元素。
    • RPop:从列表的右侧弹出元素。
  • 哈希操作(Hash)

    • HSet:设置哈希表中的字段。
    • HGet:获取哈希表中指定字段的值。
    • HDel:删除哈希表中的字段。
  • 集合操作(Set)

    • SAdd:将元素添加到集合中。
    • SMembers:获取集合中的所有成员。
  • 有序集合操作(Sorted Set)

    • ZAdd:添加元素到有序集合中。
    • ZRange:获取有序集合中的元素。

这些是 Go 语言与 Redis 的基本操作,利用 go-redis 库可以非常方便地实现 Redis 操作。

每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2024 年 12 月 20 日
如果觉得我的文章对你有用,请随意赞赏