gpt4 book ai didi

go - redis-cli 如何对在 HLL 或位图上执行 GET 时返回的字符串值进行编码?

转载 作者:IT王子 更新时间:2023-10-29 02:36:54 27 4
gpt4 key购买 nike

假设我有一个使用以下命令设置的位图

setbit key 0 1
setbit key 1 1
setbit key 2 0
setbit key 3 1
setbit key 4 1

当我从 redis-cli 运行 get on this key 时,我得到以下结果:"\xd8"

但是当我使用 go-redis API 执行此操作时我得到了一个不同的结果:@

为了获得上述结果,我使用了以下代码:

package main

import (
"fmt"

"github.com/go-redis/redis"
)

func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
})

pong, _ := client.Ping().Result()
fmt.Println(pong)

client.SetBit("key", 0, 1)
client.SetBit("key", 1, 1)
client.SetBit("key", 2, 0)
client.SetBit("key", 3, 1)
client.SetBit("key", 4, 1)

res := client.Get("bmk").Val()
fmt.Println(res)

}

我在 redis 文档的任何地方都找不到 cli 使用哪种编码来产生这样的结果。我也想在我的 go 程序中将结果转换为相同的格式。

谁能告诉我这是哪种编码,我如何将从 Redis API 接收到的结果转换为 CLI 获得的结果?

最佳答案

redis-cli 和 Go 程序在某些键上获得相同的 GET 结果。您观察到的不同之处在于结果值的格式是如何输出的。

题目中的 Go 程序按原样写入数据。

编码输出的redis-cli代码是here .该函数对换行符、引号等和 \x<hex number> 使用典型的反斜杠转义。对于其他不可打印的字节。

使用 fmt 包 "%q"动词以类似的格式输出数据:

fmt.Printf("%q\n", res)

如果您需要完全相同的格式,则需要将内部 Redis 函数转换为 Go。

关于go - redis-cli 如何对在 HLL 或位图上执行 GET 时返回的字符串值进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137651/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com