redis 所有值物件在內部都定義為 redisobject
typedef struct redisobjectredis字串物件(sds)
struct sdshdr;intset
typedef struct intsetziplist
type struct ziplist;hashtable
typedef struct dicthtskiplist
typedef struct zskiplistnode level;
//後退指標
struct zskiplistnode *backward;
//分值
double score;
//成員物件
一、字串(string 最大512m)
內部編碼:(檢視內部編碼命令 object encode 鍵值)
int:8個位元組的長整形
embstr:小於等於某個值(39個)位元組的字串
raw:大於某個值(39個)位元組的字串
二、雜湊(hash)
內部編碼:
ziplist:當元素個數小於某個值(hash-max-ziplist-entries 預設512),同時每個元素占用記憶體都小於某個值(hash-max-ziplist-value 預設64位元組)redis使用ziplist節省記憶體
hashtable:不滿足ziplist的條件就用hashtable
三、列表(list)
內部編碼:
ziplist:當元素個數小於某個值(list-max-ziplist-entries 預設512),同時每個元素占用記憶體都小於某個值(list-max-ziplist-value 預設64位元組)redis使用ziplist節省記憶體
linkedlist:不滿足ziplist的條件就用hashtable
四、集合(set)
內部編碼:
intset:當集合中的元素都是整數且元素個數小於某個值(set-max-intset-entries 預設512)時 ,使用intset節省記憶體
hashtable:不滿足intset的條件就用hashtable
五、有序集合(zset)
內部編碼:
ziplist:當元素個數小於某個值(zset-max-ziplist-entries 預設128),同時每個元素占用記憶體都小於某個值(zset-max-ziplist-value 預設64位元組)redis使用ziplist節省記憶體
skiplist:不滿足ziplist的條件就用skiplist
redis 基本資料型別及底層資料結構
1.redis 基本資料型別每種資料型別都對應兩種及以上資料結構,同一型別不同條件底層資料結構不同 檢視key對應的value編碼型別使用object encoding key 1.string string 型別有embstr和raw,int三種型別 當set的是int時,底層儲存的是int 當s...
redis基本資料結構 1
redis的作者為了方便自己的使用,在redis中定義了動態字串sds,鍊錶,字典dict,跳躍表skiplist,整數集合intset和壓縮列表ziplist這六種資料結構。下文,我簡要地介紹一下幾種資料結構的定義。sds的全稱叫 dynamic string,它的定義和注釋如下 struct s...
redis基本資料結構概述
redis 有 5 種基礎資料結構,分別為 string 字串 list 列表 hash 雜湊 set 集合 和 zset 有序集合 以下圖示並不代表記憶體連續,僅僅只是邏輯表述。因為redis的key值為字串,當我們使用字串型別作為value時,我們是在將乙個字串對映另乙個字串。member是不可...