我正在尝试理解字符串的位表示(最具体的是在Redis中)
我试过了:
redis> SET mykey3 hello
OK
redis> SETBIT mykey3 7 0
(integer) 0
redis> SETBIT mykey3 7 1
(integer) 0
redis> GET mykey3
"iello"
redis> SET mykey4 5
OK
redis> SETBIT mykey4 7 0
(integer) 1
redis> GET mykey4
"4"
那么在这种情况下,“hello”和“5”的位表示是什么?
答案 0 :(得分:0)
如果查看bitops.c,您会看到确实位命令仅适用于string key type。
来自redis.io:
支持以下所有数据类型:
- 二进制安全字符串。
- 二进制安全字符串列表。
- 二进制安全集 字符串,它是唯一未排序元素的集合。您可以 认为这是一个Ruby哈希,其中所有键都设置为'true' 值。
- 排序集,类似于集,但每个元素都在 与浮点数得分相关联。元素按顺序排列 按分数。您可以将其视为Ruby哈希的关键所在 元素和值是分数,但元素总是在哪里 按顺序进行,无需进行分类操作。
因此,只有列表和集值存储在二进制安全字符串中。键和散列值以及排序集成员也是如此。