Redis中每個對象都由一個redisObject結構表示:
typeof struct redisObject {
//類型
unsigned type : 4;
//編碼
unsigned encoding : 4;
//指向底層數據結構的指針
void *ptr;
// . . .
} robj;
type 對象的類型
REDIS_STRING 字符串對象
REDIS_LIST 列表對象
REDIS_HASH 哈希對象
REDIS_SET 集合對象
REDIS_ZSET 有序集合對象
對於Redis保存的鍵值對來說,鍵總是一個字符串對象,而值可以是上述對象中的任意對象。使用TYPE命令返回的結果是數據庫對應鍵的值對象類型。
encoding 記錄對象底層數據結構的實現。使用OBJECT ENCODING 可查看一個數據庫鍵的值對象編碼。
Redis對象的內存回收採用的是類似JVM垃圾回收的方法之一 引用計數法。