Redis都支持哪些數(shù)據(jù)類型
前言
Redis之所以被廣泛使用,不只是因?yàn)樗?,還因?yàn)樗酥С肿詈唵蔚淖址⊿tring)類型外,它還支持好幾種數(shù)據(jù)類型:
哈希(Hash)
列表(List)
集合(Set)
有序集合(Sorted Set)
位圖 ( Bitmap )
String
String為最簡單的類型,一個(gè)key對應(yīng)一個(gè)value,它還可以存二進(jìn)制的對象(Bitmap)。

Hash
Hash是鍵值對的集合。在 Redis 中,Hash是字符串字段和字符串值之間的映射。因此,它們適合表示對象。比如用戶的昵稱、年齡、性別、積分等。
示例:

List
List是一個(gè)鏈表結(jié)構(gòu),主要功能是push、pop獲取一個(gè)范圍的所有值等等。操作中key理解為鏈表的名字。
使用List 結(jié)構(gòu),我們可以輕松地實(shí)現(xiàn)最新消息排行等功能(比如新浪微博的 TimeLine )。List 的另一個(gè)應(yīng)用就是消息隊(duì)列,可以利用List的push操作,將任務(wù)存在List 中,然后工作線程再用pop操作將任務(wù)取出進(jìn)行執(zhí)行。
示例:

Set
Set是集合,和我們數(shù)學(xué)中的集合概念相似,對集合的操作有添加刪除元素,有對多個(gè)集合求交并差等操作。操作中key理解為集合的名字。比如在微博應(yīng)用中,可以將一個(gè)用戶所有的關(guān)注人存在一個(gè)集合中,將其所有粉絲存在一個(gè)集合。因?yàn)镽edis非常人性化的為集合提供了求交集、并集、差集等操作,那么就可以非常方便的實(shí)現(xiàn)如共同關(guān)注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結(jié)果返回給客戶端還是存集到一個(gè)新的集合中。
示例

Sorted set
Sorted Set是有序集合,它比set多了一個(gè)權(quán)重參數(shù)score,使得集合中的元素能夠按score進(jìn)行有序排列,比如一個(gè)存儲全班同學(xué)成績的Sorted Set,其集合value 可以是同學(xué)的學(xué)號,而score就可以是其考試得分,這樣在數(shù)據(jù)插入集合的時(shí)候,就已經(jīng)進(jìn)行了天然的排序。

倒序

Bitmap
Bitmap,即位圖,它從嚴(yán)格意義上來說,并不是一種獨(dú)立的數(shù)據(jù)類型,而是一種特殊的String數(shù)據(jù)類型。它是一串連續(xù)的二進(jìn)制數(shù)組(0和1),可以通過偏移量(offset)定位元素。
BitMap通過最小的單位bit來進(jìn)行0|1的設(shè)置,表示某個(gè)元素的值或者狀態(tài),時(shí)間復(fù)雜度為O(1)。
由于bit是計(jì)算機(jī)中最小的單位,使用它進(jìn)行儲存將非常節(jié)省空間,特別適合一些數(shù)據(jù)量大且使用二值統(tǒng)計(jì)的場景。

示例

由于這種數(shù)據(jù)場景用的并不多,所以不多做解釋了。