比如說, 集合類型就可以由字典和整數(shù)集合兩種不同的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn), 但是, 當(dāng)用戶執(zhí)行 ZADD 命令時(shí), 他/她應(yīng)該不必關(guān)心集合使用的是什么編碼, 只要 Redis 能按照 ZADD 命令的指示, 將新元素添加到集合就可以了。
這說明, 操作數(shù)據(jù)類型的命令除了要對鍵的類型進(jìn)行檢查之外, 還需要根據(jù)數(shù)據(jù)類型的不同編碼進(jìn)行多態(tài)處理.
為了解決以上問題, Redis 構(gòu)建了自己的類型系統(tǒng), 這個(gè)系統(tǒng)的主要功能包括:
redisObject 對象.
基于 redisObject 對象的類型檢查.
基于 redisObject 對象的顯式多態(tài)函數(shù).
對 redisObject 進(jìn)行分配、共享和銷毀的機(jī)制.
下圖對應(yīng)上面的結(jié)構(gòu)