Redis 類型檢查和命令多態

Redis中用於操作鍵的命令基本可以分爲2類。


其中一種是可以對任何類型的鍵執行,比如DEL,EXPIRE,RENAME,TYPE,OBJECT,TTL等命令。


另一種只能對特定的鍵執行,比如:

SET,GET,APPEND,STRLEN 等僅限用於字符串的鍵類型;

HDEL,HSET,HGET,HLEN 等僅限用於哈希鍵類型;

RPUSH,LPOP,LINSERT,LLEN 等僅限用於列表鍵類型;

SADD,SPOP,SINTER,SCARD 等僅限用於集合鍵類型;

ZADD,ZCARD,ZRANK,ZSCORE 等僅限用於有序集合鍵類型;


在執行一個類型特定命令之前,Redis會先檢查輸入鍵類型是否正確,然後再決定是否執行命令。

如果鍵名稱正確,再檢查鍵對象是否是執行命令所需的類型,不是的話就返回一個類型錯誤。


多態命令的實現除了檢查鍵類型和命令是否匹配外,還會檢查鍵的至對象所使用的編碼。例如,LLEN命令。

如果列表對象編碼爲ziplist,,說明對象爲壓縮列表,程序使用ziplistlen作爲底層實現返回列表長度。

如果列表對象編碼爲linkedlist,說明對象爲雙端鏈表,程序使用listLength作爲底層實現返回鏈表長度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章