-1
爲什麼我從下面得到「原始」結果?Redis內部表示
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
爲什麼我從下面得到「原始」結果?Redis內部表示
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
39是決定是否嵌入與否。如果你看一下代碼的確切件,其中定義是它可以解釋這一切:
https://github.com/antirez/redis/blob/73a809b1591378e1042a1028d0b8e10217e6e7c7/src/object.c#L87
至於這是所有你所說的字符串,該類型的原料,如果它是一個有效的數字表示法它是一個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
這是一個非常好的答案。但這也是一個非常好的問題,儘管可能不是很像SO。因爲它詢問「爲什麼」。 – 2014-09-30 22:27:23
是的,我確實知道。從問題的形式來看,我認爲這並不意味着被問及的方式。但你是正確的:-) – 2014-09-30 22:29:37
讓我們沿着「什麼是原始編碼」這一行編輯問題?我確定這就是這個意思。 :) – 2014-09-30 22:32:29