Redis内部表示

时间:2014-09-30 00:22:53

标签: redis

为什么我得到结果" 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

1 个答案:

答案 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