redis底層原理

2021-08-21 11:21:50 字數 1937 閱讀 3417

[plain]

view plain

copy

redis>set message "hello redis"  

物件的名稱

redis_string

字串物件

redis_list

列表物件

redis_hash

雜湊物件

redis_set

集合物件

redis_zset

有序集合物件

[cpp]

view plain

copy

/** redis 物件

*/typedef

struct

redisobject  robj;  

redis物件底層資料結構

編碼所對應的底層資料結構

redis_encoding_int

long型別的整數

redis_encoding_embstr

embstr編碼的簡單動態字串

redis_encoding_raw

簡單動態字串

redis_encoding_ht

字典redis_encoding_linkedlist

雙端鍊錶

redis_encoding_ziplist

壓縮列表

redis_encoding_intset

整數集合

redis_encoding_skiplist

跳躍表和字典

[cpp]

view plain

copy

#define redis_encoding_embstr_size_limit 39

robj *createstringobject(char

*ptr, 

size_t

len)   

相對地,釋放記憶體的次數也由兩次變為一次。

embstr的objet和sds放在一起,更好地利用快取帶來的優勢。

[cpp]

view plain

copy

typedef

struct

dict  dict;  

view plain

copy

typedef

struct

dictht  dictht;  

[cpp]

view plain

copy

#define intset_enc_int16 (sizeof(int16_t))

#define intset_enc_int32 (sizeof(int32_t))

#define intset_enc_int64 (sizeof(int64_t))

[cpp]

view plain

copy

/** 跳躍表

*/typedef

struct

zskiplist  zskiplist;  

/* zsets use a specialized version of skiplists */

/** 跳躍表節點

*/typedef

struct

zskiplistnode  level;  

} zskiplistnode;  

[cpp]

view plain

copy

typedef

struct

zset  zset;  

redis深度理解底層鎖原理

redis的鎖分別有incr setnx set,那麼我們就開始來談談他們的用法和場景吧!1.incr 計時器,1操作 a 語法 incr key b 場景 1 控制api 1秒內的多次訪問 2 記錄使用者每天訪問 的登入次數 c 為何我們說這個怎麼能算鎖呢,當然,單獨它肯定是算不了鎖的,因為它本身...

Redis的AOF持久化底層原理

當對空白資料庫執行鍵值對命令時,rdb持久化是將鍵值儲存到rdb檔案中,而aof持久化儲存資料庫狀態的方法是將命令寫入到aof檔案中。被寫入aof檔案的所有命令都是以redis的命令請求協議格式儲存 的,因為redis的命令請求協議是純文字格式,所以我們可以直接開啟 乙個aof檔案,觀察裡面的內容。...

HashMap底層原理

1.hashmap概述 hashmap是基於雜湊表的map介面的非同步實現。此實現提供所有可選的對映操作,並允許使用null值和null鍵。此類不保證對映的順序,特別是它不保證該順序恆久不變。2.hashmap的資料結構 注意,迭代器的快速失敗行為不能得到保證,一般來說,存在非同步的併發修改時,不可...