一般的說法redis字串內部編碼有三種:
int:8個位元組的長整型;
embstr:小於等於39個位元組長度的字串;
raw:大於39個位元組的字串。
新版本int:8個位元組的長整型;
embstr:小於等於44個位元組長度的字串;
raw:大於44個位元組的字串。
官方證明:
#define obj_encoding_embstr_size_limit 44
robj *createstringobject(const char *ptr, size_t len)
實際操作127.0.0.1:6379> set test bug
ok127.0.0.1:6379> setrange test 5 end
(integer) 8
127.0.0.1:6379> strlen test
(integer) 8
127.0.0.1:6379> object encoding test
"raw"
總結
實踐出真知,但是原始碼看不太懂,
redis 的資料結構和內部編碼
首先,從網上找來一張鎮樓 redis對外展現五種資料型別,string 字串 hash 雜湊 list 列表 set 集合 zset 有序集合 每種資料結構,redis都提供了不同的內部編碼實現方式 內部編碼可以通過 object encoding key 檢視 以便使用不同的場景 1 string...
Redis字串型別內部編碼剖析
我們平時用 redis都是處於使用者層面,我們可能會不加思索地操作乙個 key value 對來方便地訪問資料,感覺方便之至。但你知道這些資料在背後是如何儲存以及編碼的嗎?了解清楚了這個問題,將對我們更加高效地使用 redis具有指導意義。本文開始我們將結合 redis原始碼來逐個 redis五大資...
Redis中的資料結構和內部編碼
redis儲存結構是一張雜湊表,類似於hashmap的結構即陣列加鍊表 可以理解為redis中儲存的值對外的儲存結構型別,也就是type命令查詢到的型別,如hash,list,string。指的是如hash這個型別redis內部又分為不同的實現,通過object encoding key可以檢視va...