Redis的字串是怎麼實現的?

2021-09-17 21:16:35 字數 728 閱讀 1362

redis 的常用5種資料結構,redis持久化策略,redis實現分布式鎖,簡單發布訂閱等等

面試官 :看你簡歷上寫了熟悉常用資料結構,都有哪些說說

本人 :常用有5種,string,list,set,zset,hash(內心很得意)

面試官 :那你說說都用過哪些資料結構

本人 :用的最多的是string,通常會把json字串存進去

面試官 :那你知道redis內部是怎麼實現它的string的麼?

本人 :呃~,我了解redis是用c語言寫的,至於具體實現就不清楚了~

本篇會講一下內容:

redis雖然是用c語言寫的,但卻沒有直接用c語言的字串,而是自己實現了一套字串。目的就是為了提公升速度,提公升效能,可以看出redis為了高效能也是煞費苦心。

redis構建了乙個叫做簡單動態字串(****** dynamic string),簡稱sds。

struct sdshdr

;

追加』 world』 6個字元,redis會做一下三個操作:

1.計算出大小是否足夠

2.開闢空間至滿足所需大小

3.開闢與已使用大小len相同長度的空閒free空間(如果len < 1m)開闢1m長度的空閒free空間(如果len >= 1m)

快速獲取字串長度

避免緩衝區溢位

降低空間分配次數提公升記憶體使用效率

Redis的底層實現 字串章節

不要遺忘最初的目標。ruider 總結 about me redis的命令如下 set x hello get x helloredis作為一種儲存字串的快取結構,其具體實現是由c語言完成,在c語言中,字串是通過字元陣列實現的,即char,那麼redis對於字串的實現是不是也是基於字元陣列嗎?不是的...

Redis的簡單動態字串實現

redis 沒有直接使用 c 語言傳統的字串表示 以空字元結尾的字元陣列,以下簡稱 c 字串 而是自己構建了一種名為簡單動態字串 dynamic string,sds 的抽象型別,並將sds用作 redis 的預設字串表示。sds簡單動態字串資料結構如下 1 typedef char sds 23 ...

Redis的字串型別

字串是 redis 中最常用的資料結構。字串型別的值,簡單字串,json xml,數字,二進位制 等 最大 512mb 大小。set key value ex seconds px milliseconds nx xx ex 為鍵設定秒級過期時間 px 為鍵設定毫秒級過期時間 nx 鍵必須不存在,才...