1. 程式人生 > >Redis的數據結構(一)

Redis的數據結構(一)

惰性 api rim 緩沖 可能 過程 edi strong body

(一)使用SDS(simple dynamic string)簡單動態字符串。

好處:

1.可以杜絕緩沖區溢出。--->SDS API在修改SDS時會進行空間判斷,【空間不足自動擴充-->再執行修改操作

2.C內存重分配 過程--->每次都要重分配--->耗時影響性能

①執行增長字符串操作--->like appened拼接操作,在執行該操作之前--->先通過內存重分配-->拓展底層數組空間大小。

②執行縮短字符串操作--->like trim,那麽在執行這個操作之後,內存重分配--->釋放部分空間

3.SDS空間預分配

惰性空間釋放【SDS優化策略

①:空間預分配:--->用於優化SDS字符串增長操作。【①SDS.len<1MB--->size*2+1[size大小的未使用空間+這個1用於保存空字符]

②SDS.len>1MB--->30MB(len的大小由1變為30)+1MB(未使用空間)+1byte(保留空字符)

②:惰性空間釋放--->優化SDS字符串縮短操作。避免縮短字符時所需要的內存重新分配

操作。並為將來可能的增長操作提供了優化

(二)Redis字典的實現

1.哈希表

擴展和收縮是根據 負載因子來判斷的。【其中拓展有個--寫時復制---優化子進程的使用效率】

Redis的數據結構(一)