壹、String | 字符串類型
Redis的字符串類型,可以存儲字符串、整數或浮點數,如果存儲的是整數或者浮點數,還能執行自增或自減操作。Reids的string類型是二進制的,可以包含任何數據,比如壹個序列化的對象、壹個圖片、字節流等,不過存儲大小上限是512M。
Redis底層定義了自己的壹種數據結構。
二、List | 列表類型
Redis的列表類型和許多編程語言中的列表類型類似,可以有序地存儲多個字符串,支持從列表的左端和右端推入或彈出元素,Redis列表的底層實現是壓縮列表,Redis內容自己實現的數據結構和雙端鏈表。
將壹個或者多個value值插入列表的表頭。如果 key 不存在,會創建壹個空列表並執行 LPUSH 操作。當 key
存在但不是列表類型時,返回壹個錯誤。
三、set | 集合類型
Redis的集合以無序的方式存儲多個不同的元素,這裏要註意的是無序和不同。除了對集合能快速執行添加、刪除、檢查壹個元素是否在集合中之外,還可以對多個集合執行交集、並集和差集運算。
Redis的集合類型底層實現主要是通過壹種叫做字典的數據結構。不過Redis為了追求極致的性能,會根據存儲的值是否是整數,選擇壹種intset的數據結構。當滿足壹定條件後,會切換成字典的實現。
四、hash | 散列表(哈希表)
Redis的hash類型其實就是壹個縮減版的redis。它存儲的是鍵值對,將多個鍵值對存儲到壹個redis鍵裏面。
hash類型的底層主要也是基於字典這種數據結構來實現的。
五、zset | 有序集合
有序集合相比較於集合,多個有序兩個字,我們知道set集合類型存儲的元素是無序的,那Redis有序集合是怎麽保證有序的?使用分值,有序集合裏存儲這成員與分值之間的映射,並提供了分值處理命令,以及根據分值的大小有序地獲取成員或分值的命令。
Redis有序集合的實現使用了壹種叫跳躍表的數據結構(簡稱跳表,可自行查閱),同時也使用到了前面提到的壓縮列表。也是滿足壹定條件的話,會自行轉換。