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是學生考試成績。我們可以對成績按分數進行排序就可以得到他的名字。
相關文章
- Linux下安裝Redis
- javascript中的資料型別
- Java網路程式設計--UDP傳送接收資料
- stm32DMA+訊息佇列實現串列埠資料接收不丟包
- ClickHouse資料庫資料定義手記之資料型別
- ehcarts擴充套件優秀的資料表
- 23 大資料之hive(第四部 hive基礎)
- C語言練習——資料加密
- redis原始碼學習之slowlog
- echarts入門(通過axios請求資料)
- 2020年A特種裝置相關管理(電梯)考試資料及A特種裝置相關管理(電梯)考試技巧
- 大資料和Hadoop平臺介紹
- (在模仿中精進資料視覺化04)舊金山街道樹木分佈視覺化
- Mysql資料庫之多表查詢、事務、DCL
- Mysql資料安全備份
- 在SAP Spartacus產品明細頁面用outlet顯示自定義資料
- Redis資料結構之整數集合
- 【資料結構】二叉樹的建立與遍歷
- 基於深度對抗學習的智慧模糊資料生成方法