为什么我得到结果" raw"来自以下?
redis 127.0.0.1:6379> set massage "hello"
OK
redis 127.0.0.1:6379> object encoding massage
"raw"
是否与此有关?
#define REDIS_ENCODING_EMBSTR_SIZE_LIMIT 39
答案 0 :(得分:1)
39是决定是否嵌入它。如果您查看定义所在的确切代码段,则可以解释所有内容:
https://github.com/antirez/redis/blob/73a809b1591378e1042a1028d0b8e10217e6e7c7/src/object.c#L87
关于raw所有你称之为字符串的类型,如果它是一个有效的数字表示,那么它就是一个Int。
示例:
127.0.0.1:6379> set str "hello"
OK
127.0.0.1:6379> object encoding str
"raw"
127.0.0.1:6379> set int 1
OK
127.0.0.1:6379> object encoding int
"int"
127.0.0.1:6379> lpush list hello
(integer) 1
127.0.0.1:6379> object encoding list
"ziplist"
127.0.0.1:6379> zadd zset 1 1
(integer) 1
127.0.0.1:6379> object encoding zset
"ziplist"
127.0.0.1:6379> sadd set 1
(integer) 1
127.0.0.1:6379> object encoding set
"intset"
127.0.0.1:6379> hset hash field value
(integer) 1
127.0.0.1:6379> object encoding hash
"ziplist"
正如您所见,这是对象在内部表示为Redis的方式。
如果您想要实际类型,可以尝试type
命令。
P.S。请在下次更清楚地提问。也许值得为你看的地方添加参考。您不能简单地偶然发现define