- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
假设我有一个使用以下命令设置的位图
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/
这是我一直在寻找的问题,但我还没有得到合适的答案:( 哈佛架构如何映射到 C/C++ 语言(高级语言)? 它们之间有什么关系,或者该架构对 HLL 有何帮助? 最佳答案 哈佛与普林斯顿体系结构与 C+
我是一名电子专业的学生,我主要使用汇编编程。昨晚我看到一篇很棒的文章,讨论了用 Ruby 编写编译器。作者所做的是使用 GCC 来查看 C 是如何转换为 Assembly 的。这引起了我很大的共鸣
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
Hyperlog日志是一种概率算法根据 redis HLL 文档,我们可以得到 0.81% 的错误,但我得到 17-20% 的错误 我认为有问题.. 这是我的简单 perl 测试脚本。有没有错误 #!
我有一个有点大的表(1.3 亿行),我可以在 10 分钟内在同一台服务器上处理它,并生成一个精简的、预先聚合的表,它工作得很好,每个人都很高兴使用它。 该表按大约 6 列分组,其余列使用 SUM()
相关表架构示例: +---------------------------+-------------------+ | activity_date - TIMESTAMP | user_id - S
假设我有一个使用以下命令设置的位图 setbit key 0 1 setbit key 1 1 setbit key 2 0 setbit key 3 1 setbit key 4 1 当我从 red
需要能够报告唯一身份访问者,但希望避免预先计算每个可能的键排列和创建多个表。 作为一个简单的例子,假设我需要在包含以下列的表中报告每月唯一身份 日期(月/年) 页面编号 country_id devi
我是一名优秀的程序员,十分优秀!