使用golang从redis扫描密钥,可以使用Redigo库中的SCAN命令。

SCAN命令可以用来遍历redis中的所有键,而不是使用KEYS命令,因为KEYS命令会对redis服务器造成较大的压力。

使用SCAN命令,可以使用以下代码:

// 连接到redis

conn, err := redis.Dial("tcp", "localhost:6379")

if err != nil {

    log.Fatal(err)

}

defer conn.Close()

// 初始化游标

cursor := 0

// 执行SCAN命令

for {

    // 执行SCAN命令

    reply, err := conn.Do("SCAN", cursor)

    if err != nil {

        log.Fatal(err)

    }

    // 获取游标

    arr, err := redis.Values(reply, nil)

    if err != nil {

        log.Fatal(err)

    }

    // 获取游标

    cursor, err = redis.Int(arr[0], nil)

    if err != nil {

        log.Fatal(err)

    }

    // 获取键

    keys, err := redis.Strings(arr[1], nil)

    if err != nil {

        log.Fatal(err)

    }

    // 遍历键

    for _, key := range keys {

        fmt.Println(key)

    }

    // 如果游标为0,则结束循环

    if cursor == 0 {

        break

    }

}