網站首頁 釣魚入門 釣魚技巧 魚餌料 釣魚工具 聚焦
當前位置:漁魚館 > 釣魚入門 > 新手釣魚

redis對象

欄目: 新手釣魚 / 發佈於: / 人氣:1.97W

redis使用對象來表示數據庫中鍵和值,每次在庫中創建一個鍵值對時,至少會創建兩個對象,一個是鍵對象,一個是值對象

其數據結構如下:

redis對象

1. 類型

這個類型保存就是redis所支持的五種數據類型的一種

REDIS_STRING 字符串對象

REDIS_LIST 列表對象

REDIS_HASH 哈希對象

REDIS_SET 集合對象

REDIS_ZSET 有序集合對象

2. 編碼

對象ptr指針指向具體的底層數據結構的實現,而具體使用哪一種底層結構則有encoding屬性決定,共8種

REDIS_ENCODING_INT long類型的整數 REDIS_ENCODING_EMBSTR embstr編碼的簡單動態字符串 REDIS_ENCODING_RAW 簡單動態字符串 REDIS_ENCODING_HT 字典 REDIS_ENCODING_LINKEDLIST 雙端鏈表 REDIS_ENCODING_ZIPLIST 壓縮列表 REDIS_ENCODING_INTSET 整數集合 REDIS_ENCODING_SKIPLIST 跳錶

3. 字符串對象

字符串對象的編碼可以是int,raw,embstr

如果一個字符串保存的是整數值,那並且這個整數值可以用long來表示,那麼字符串對象對象會將整數值保存在字符串結構的ptr屬性裏面(將void*轉換成long),並將編碼設置為int如果字符串對象保存的是一個字符串的值,且這個字符串的值的長度大於32字節,那麼字符串對象將使用一個SDS來保存這個字符串的值,並將編碼設置為raw如果字符串對象保存的是一個字符串的值,且這個字符串的值的長度小於32字節,那麼字符串對象將使用一個embstr編碼的方式來保存這個字符串的值,並將編碼設置為embstr,embstr編碼專門用來保存短字符串一種優化編碼

4. 列表對象

列表對象的編碼可以是ziplist或者linkedlist

列表對象保存的所有字符串的長度都小於64字節且列表對象保存的元素數量小於512個時使用ziplist來存儲,否則使用linkedlist

5. 哈希對象

字符串對象的編碼可以是ziplist,hashtable

哈希對象保存的所有鍵值對的鍵和值的字符串長度都小於64字節,且哈希對象保存的鍵值對數量小於512時使用ziplist來存儲,否則使用hashtable

注:ziplist存儲哈希對象時鍵值對都是挨在一起存儲的

redis對象 第2張

6. 集合對象

集合對象的編碼可以是intset或者hashtable

集合對象保存的所有元素都是整數值且元素數量不超過512時使用intset存儲,否則使用hashtable

7. 有序集合對象

集合對象的編碼可以是ziplist或者skiplist

有序集合保存元素個數小於128且所有元素成員長度都小於64字節時使用ziplist來存儲,否則使用skiplist

Tags:redis