假设我有一个使用以下命令设置的位图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。
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消