衆所周知,redis有五種數據類型
- string(字符串)
- lists(列表)
- sets(無序的字符串集合)
- zsets(有序的字符串集合)
- 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個鍵值對。