sds是redis本身實現的一種數據結構,用來做爲redis底層默認字符串,與c語言的字符串區別開來。
在redis中c字符串通常用於不須要改變的字符串值,叫作字符串字面量,如:打印日誌。
redis中每對鍵值的鍵都是一個sds對象。redis
傳統c字符串與sds比較:算法
避免頻繁內存重分配:傳統c字符串的長度爲n+1(空字符),每一次append時須要從新分配內存,不然內存溢出;若是trim字符串,後面不須要的空間也要釋放,不然內存泄露。內存重分配設計複雜算法且可能須要系統調度,不符合redis的速度要求。而sds經過free-未使用空間來解除了底層數組長度與字符串長度間的關聯,sds擁有空間預分配與惰性空間釋放兩鍾優化策略。數組