redis內部編碼區分問題

2021-09-25 03:20:05 字數 586 閱讀 2125

一般的說法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...