redis下位データ組織方式
724 ワード
最下位データ構造
redis下位データ構造には、辞書、両端チェーンテーブル、圧縮チェーンテーブル、整数集合、ジャンプテーブルおよび辞書、整数集合、embstr符号化の単純動的文字列、long型の整数があり、redisが応用面で表現するデータ型はいずれも1つまたは複数の下位データ構造によって実現され、以下に各データ構造について説明する.
sds単純動的文字列
sdsの構造は以下の通りである.struct __attribute__ ((__packed__)) sdshdr32 {
uint32_t len; /* used */
uint32_t alloc; /* excluding the header and null terminator */
unsigned char flags; /* 3 lsb of type, 5 unused bits */
char buf[]; //
};
sdsとCの文字列の違いは、sdsがlenを使用して文字列の実際の長さを表し、冗長bufferを持つ文字配列を使用して文字列を格納するとともに、cの文字列と互換性を持つために文字列の末尾に空の文字を設定することである.このような利点は、1、定数複雑度で文字列長を取得し、2、バッファオーバーフローを防止し、3、bufferプリ割り当てと不活性空間解放を採用し、文字列の修正によるメモリ再割り当て回数を減らすことである.4、バイナリ安全【未完待機】
struct __attribute__ ((__packed__)) sdshdr32 {
uint32_t len; /* used */
uint32_t alloc; /* excluding the header and null terminator */
unsigned char flags; /* 3 lsb of type, 5 unused bits */
char buf[]; //
};