(三)、Redisオブジェクトタイプと下位データ構造の対応関係---Redis設計と読書ノートの実現
2372 ワード
5つの基本タイプ
Redisは、1つのキー値ペアを作成すると、少なくとも2つのオブジェクトが作成され、1つのオブジェクトがキー値ペアのキー(キーオブジェクト)として使用され、もう1つのオブジェクトがキー値ペアの値(値オブジェクト)として使用されます.キーは常に1つの文字列オブジェクトであり、値は以下の5つのオブジェクトのうちの1つであってもよい.
タイプ定数
オブジェクトの名前
typeコマンド出力
REDIS_STRING
文字列オブジェクト
“string”
REDIS_LIST
リストオブジェクト
“list”
REDIS_HASH
ハッシュ・オブジェクト
“hash”
REDIS_SET
集合オブジェクト
“set”
REDIS_ZSET
整列集合オブジェクト
“zset”
Redis内の各オブジェクトは、RedisObject構造で表されます.
typedef struct redisObject {
//
unsigned type:4;
// ( )
unsigned notused:2;
//
unsigned encoding:4;
// LRU ( server.lruclock)
unsigned lru:22;
//
int refcount;
//
void *ptr;
} robj;
コーディングと最下位実装
コーディング定数
最下位データ構造
object encodingコマンド出力
REDIS_ENCODING_INT
longタイプの整数
“int”
REDIS_ENCODING_EMBSTR
Embstr符号化の単純な動的文字列
“embstr”
REDIS_ENCODING_RAW
単純な動的文字列
“raw”
REDIS_ENCODING_HT
辞書
“hashtable”
REDIS_ENCODING_LINKEDLIST
にたんチェーンけい
“linkedlist”
REDIS_ENCODING_ZIPLIST
リストの圧縮
“ziplist”
REDIS_ENCODING_INTSET
せいすうしゅうごう
“intset”
REDIS_ENCODING_SKIPLIST
ジャンプテーブルと辞書
“skiplist”
##文字列オブジェクトのエンコーディングタイプ:
##リストオブジェクト符号化タイプ:【注意:3.2バージョン以降、符号化タイプとしてquicklistを統一する】