redis 支援哪些資料型別
最近在面試的過程中,發現有很多同學都說用過 Redis,但是問 Redis 支援哪幾種資料型別,又不是很能回答上來,特記錄如下:
Redis 支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及 zset(sorted set:有序集合)。
-
字串--String
string 是 redis 最簡單最基本的資料結構,Redis 所有的資料結構都是以唯一的 key 作為名稱,然後透過唯一的 key 值來獲取對應的 value 資料。
不同型別的資料結構的差異就在於 value 的結構不一樣。
string 型別是二進位制安全的。意思是 redis 的 string 可以包含任何資料。比如 jpg 圖片或者序列化的物件。
字串結構的使用非常廣泛,一個常見的用途就是快取使用者資訊。
我們將使用者資訊結構體使用 JSON 序列化成字串,然後將序列化後的字串,然後將序列化後的字串塞進 Redis 來快取。
同樣的,獲取使用者資訊會經過一次反序列化過程。 -
列表--List
Redis 的列表相當於 Java 中的 LinkedList,注意它是連結串列而不是陣列。這意味著 list 的插入和刪除操作會非常快,時間複雜度為 O(1),但是索引定位很慢,時間複雜度為 O(name),這點讓人非常意外。
當列表彈出最後一個元素之後,該資料結構自動被刪除,記憶體被回收。列表可以在左右兩邊進行插入和刪除操作。
-
雜湊--Hash
Redis 中的字典,相當於 Java 中的 HashMap,是無序字典,內部實現結構上同 Java 的 HashMap 是一致的,同樣的陣列 + 連結串列的二維結構。
Redis hash 是一個 string 型別的 field 和 value 的對映表,hash 特別適合儲存物件。
Hash 結構儲存使用者資訊,不同於字串一次性需要全部序列化整個物件,hash 可以對使用者結構中的每個欄位單獨儲存。
這樣我們需要獲取使用者資訊時,可以進行部分獲取。如果以字串形式儲存使用者資訊的話,就只能一次性全部讀取,這樣就會比較浪費流量。 -
集合--Set
Redis 的集合相當於 Java 中的 HashSet,它內部的鍵值對是無序的唯一的。它的內部實現相當於一個特殊的字典,字典中所有的 value 都是一個值 null。
當集合中最後一個元素移除之後,資料結構自動刪除,記憶體被回收。
set 結構可以用來儲存活動中獎的使用者 ID,因為有去重功能,可以保證同一個使用者不會中獎兩次。 -
有序集合--Sorted Set
zset 可能是 Redis 提供的最有特色的資料結構,它也是在面試中面試官最愛問的資料結構。
它類似於 Java 中的 SortedSet 和 HashMap 的結合體,一方面它是一個 set,保證了內部 value 的唯一性,
另一方面它可以給每個 value 賦予一個 score,代表 value 的排序權重。
zset 可以用來存粉絲列表,value 值是粉絲的使用者 ID,score 是關注事件。我們可以對粉絲列表按照關注時間進行排序。
zset 也可以用來儲存學生成績,value 是學生 ID,score 是學生考試成績。我們可以對成績按分數進行排序就可以得到他的名字。
相關文章
- Python支援哪些資料型別Python資料型別
- BlueHost主機支援哪些資料庫型別?資料庫型別
- ETLCloud支援的資料處理型別包括哪些?Cloud型別
- 資料型別: 資料型別有哪些?資料型別
- Redis資料型別Redis資料型別
- 報表工具都支援哪些資料來源型別?型別
- Java 支援的資料型別與 MySQL 支援的資料型別對比Java資料型別MySql
- 【Redis】Redis的資料型別速查(5種基礎型別,5特殊型別)Redis資料型別
- 【Redis】資料型別介紹Redis資料型別
- Redis 資料型別及操作Redis資料型別
- Redis資料型別基本操作Redis資料型別
- JavaScript有哪些資料型別?JavaScript資料型別
- 資料型別是什麼?Python的資料型別又有哪些?資料型別Python
- 07 redis-資料型別 setRedis資料型別
- Redis Hashes 資料型別簡述Redis資料型別
- Redis 三種特殊資料型別Redis資料型別
- Redis 筆記(核心資料型別)Redis筆記資料型別
- 2、Redis的資料型別-stringRedis資料型別
- Redis的資料型別——探究竟Redis資料型別
- redis-資料型別及命令Redis資料型別
- 深入理解redis資料型別Redis資料型別
- redis學習筆記2: Redis資料型別Redis筆記資料型別
- Redis學習筆記(二)——Redis資料型別Redis筆記資料型別
- 《閒扯Redis九》Redis五種資料型別之Set型Redis資料型別
- 《閒扯Redis六》Redis五種資料型別之Hash型Redis資料型別
- JavaScript基本資料型別有哪些JavaScript資料型別
- 資料分析工具有哪些型別型別
- Java有哪些基本資料型別?Java資料型別
- Mysql支援的資料型別(總結)MySql資料型別
- Redis 基礎資料型別重溫Redis資料型別
- Redis 高階資料型別重溫Redis資料型別
- 初識Redis的資料型別HyperLogLogRedis資料型別
- redis-4.資料儲存型別Redis型別
- redis-22.高階資料型別Redis資料型別
- Redis基本資料型別命令彙總Redis資料型別
- redis各資料型別應用概述Redis資料型別
- Golang 庫 Redis 對 data 型別的支援GolangRedis型別
- Redis基本資料型別底層資料結構Redis資料型別資料結構