redis的五種數據類型詳細圖解

衆所周知,redis有五種數據類型

  1. string(字符串)
  2. lists(列表)
  3. sets(無序的字符串集合)
  4. zsets(有序的字符串集合)
  5. hashs(哈希類型)

一,string(字符串類型)

在Redis中字符串類型的Value最多可以容納的數據長度是512M

 

二,存儲lists類型

在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表 一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不 存在,Redis將爲該鍵創建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移 除,那麼該鍵也將會被從數據庫中刪除。List中可以包含的最大元素數量是 4294967295。

 從元素插入和刪除的效率視角來看,如果我們是在鏈表的兩頭插入或刪除元素,這將 會是非常高效的操作,即使鏈表中已經存儲了百萬條記錄,該操作也可以在常量時間 內完成。然而需要說明的是,如果元素插入或刪除操作是作用於鏈表中間,那將會是 非常低效的。

 

三,sets類型

在Redis中,我們可以將Set類型看作爲沒有排序的字符集合,和List類型一樣,我 們也可以在該類型的數據值上執行添加、刪除或判斷某一元素是否存在等操作。需要 說明的是,這些操作的時間是常量時間。Set可包含的最大元素數是4294967295。

和List類型不同的是,Set集合中不允許出現重複的元素。和List類型相比,Set類 型在功能上還存在着一個非常重要的特性,即在服務器端完成多個Sets之間的聚合計 算操作,如unions、intersections和differences。由於這些操作均在服務端完成, 因此效率極高,而且也節省了大量的網絡IO開銷

 

四,sortedset類型

Sorted-Sets和Sets類型極爲相似,它們都是字符串的集合,都不允許重複的成員出 現在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分 數(score)與之關聯,Redis正是通過分數來爲集合中的成員進行從小到大的排序。然 而需要額外指出的是,儘管Sorted-Sets中的成員必須是唯一的,但是分數(score) 卻是可以重複的。

在Sorted-Set中添加、刪除或更新一個成員都是非常快速的操作,其時間複雜度爲 集合中成員數量的對數。由於Sorted-Sets中的成員在集合中的位置是有序的,因此, 即便是訪問位於集合中部的成員也仍然是非常高效的。事實上,Redis所具有的這一 特徵在很多其它類型的數據庫中是很難實現的,換句話說,在該點上要想達到和Redis 同樣的高效,在其它數據庫中進行建模是非常困難的。

例如:遊戲排名、微博熱點話題等使用場景。

 

五,hash類型

Redis中的Hash類型可以看成具有String Key和String Value的map容器。所 以該類型非常適合於存儲值對象的信息。如Username、Password和Age等。如果 Hash中包含很少的字段,那麼該類型的數據也將僅佔用很少的磁盤空間。每一個Hash 可以存儲4294967295個鍵值對。

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