在 Golang 中,使用 go-redis 库与 Redis 进行交互时,SMembers 命令用于获取集合中的所有成员。以下是一个使用 go-redis 库执行 SMembers 命令的示例代码:

package main

import (
    "context"
    "fmt"
    "github.com/go-redis/redis/v9" // 确保使用的是正确的版本
)

var ctx = context.Background()

func main() {
    rdb := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379", // Redis 服务器地址
        Password: "",               // 没有密码则留空
        DB:       0,                // 使用默认数据库
    })

    // 测试连接
    pong, err := rdb.Ping(ctx).Result()
    if err != nil {
        fmt.Println("无法连接到 Redis:", err)
        return
    }
    fmt.Println("连接成功:", pong)

    // 添加元素到集合
    err = rdb.SAdd(ctx, "tags", "redis", "go", "database").Err()
    if err != nil {
        fmt.Println("添加到集合失败:", err)
        return
    }

    // 获取集合中的所有元素
    tags, err := rdb.SMembers(ctx, "tags").Result()
    if err != nil {
        fmt.Println("获取集合元素失败:", err)
        return
    }
    fmt.Println("tags:", tags)
}

在这个示例中,首先初始化了一个 Redis 客户端,然后使用 SAdd 命令向名为 tags 的集合中添加了三个元素。之后,使用 SMembers 命令获取该集合中的所有元素,并打印出来。

如果你的集合很大,一次性获取所有成员可能会影响性能。在这种情况下,你可以考虑使用 SScan 命令进行分页查询,或者使用 SRandMember 命令随机获取成员,以减少对性能的影响。