为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
catspeake 2023-03-29 15:53:15
假设我有一个使用以下命令设置的位图setbit key 0 1setbit key 1 1setbit key 2 0setbit key 3 1setbit key 4 1当我从 redis-cli 运行 get on this key 时,我得到以下结果:"\xd8"但是当我使用go-redis API执行此操作时,我得到了不同的结果:@为了获得上述结果,我使用了以下代码:package mainimport (    "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 获得的结果?
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

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

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

该函数对换行符、引号等和\x<hex number>其他不可打印的字节使用典型的反斜杠转义。

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

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

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


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信