Redis 是一種基于內(nèi)存的數(shù)據(jù)庫,并且提供一定的持久化功能,它是一種鍵值(key-value)數(shù)據(jù)庫葛虐,使用 key 作為索引找到當(dāng)前緩存的數(shù)據(jù),并且返回給程序調(diào)用者棕洋。
當(dāng)前的 Redis 支持 6 種數(shù)據(jù)類型挡闰,它們分別是字符串(String)、列表(List)掰盘、集合(set)摄悯、哈希結(jié)構(gòu)(hash)、有序集合(zset)和基數(shù)(HyperLogLog)愧捕。
使用 Redis 編程要熟悉這 6 種數(shù)據(jù)類型奢驯,并且了解它們常用的命令。Redis 定義的這 6 種數(shù)據(jù)類型是十分有用的次绘,它除了提供簡(jiǎn)單的存儲(chǔ)功能瘪阁,還能對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行一些計(jì)算。
比如字符串可以支持浮點(diǎn)數(shù)的自增邮偎、自減管跺、字符求子串,集合求交集禾进、并集豁跑,有序集合進(jìn)行排序等,所以使用它們有利于對(duì)一些不太大的數(shù)據(jù)集合進(jìn)行快速計(jì)算泻云,簡(jiǎn)化編程艇拍,同時(shí)它也比數(shù)據(jù)庫要快得多狐蜕,所以它們對(duì)系統(tǒng)性能的提升十分有意義。
表 1 列出了關(guān)于 Redis 的 6 種數(shù)據(jù)類型的基本描述卸夕。
數(shù)據(jù)類型 | 數(shù)據(jù)類型存儲(chǔ)的值 | 說明 |
---|---|---|
STRING(字符串) | 可以是保存字符串层释、整數(shù)和浮點(diǎn)數(shù) | 可以對(duì)字符串進(jìn)行操作。比如增加字符串或者求子串快集,如果是整數(shù)或者浮點(diǎn)數(shù)贡羔,可以實(shí)現(xiàn)計(jì)算,比如自增等 |
LIST(列表) | 是一個(gè)鏈表个初,它的每一個(gè)節(jié)點(diǎn)都包含一個(gè)字符串 | Redis支持從鏈表的兩端插入或者彈出節(jié)點(diǎn)治力,或者通過偏移對(duì)它進(jìn)行裁剪;還可以讀取一個(gè)或多個(gè)節(jié)點(diǎn)勃黍,根據(jù)條件刪除或者查找節(jié)點(diǎn)等 |
SET(集合) | 它是一個(gè)收集器宵统,但是是無序的,在它里面每個(gè)元素都是一個(gè)字符串覆获,而且是獨(dú)一無二的马澈,各不相同 | 可以新增、讀取弄息、刪除單個(gè)元素痊班;檢測(cè)一個(gè)元素是否在集合中;計(jì)算它和其他集合的交集摹量、并集和差集等涤伐;隨機(jī)從集合中讀取元素 |
HASH(哈希散列表) | 類似于Java中的Map,是一個(gè)鍵值對(duì)應(yīng)的列表 | 可以增缨称、刪凝果、改、查單個(gè)鍵值對(duì)睦尽,也可以獲取所有的鍵值對(duì) |
ZSET(有序集合) | 它是一個(gè)有序的集合器净,可以包含字符串、整數(shù)当凡、浮點(diǎn)數(shù)山害、分值(score),元素的排序是依據(jù)分值的大小來決定的 | 可以增沿量、刪浪慌、改、查單個(gè)元素朴则,根據(jù)分值的范圍或者成員來獲取對(duì)應(yīng)的元素 |
HyperLogLog(基數(shù)) | 它的作用是計(jì)算重復(fù)的值权纤,以確定存儲(chǔ)的數(shù)量 | 只提供基數(shù)的運(yùn)算,不提供返回的功能 |
這個(gè)表格粗略描述了 Redis 的 6 種數(shù)據(jù)類型,并簡(jiǎn)要說明了它們的作用妖碉,未來我們還會(huì)詳細(xì)介紹它們的數(shù)據(jù)結(jié)構(gòu)和常用 Redis 命令。此外芥被,Redis 還支持一些事務(wù)欧宜、發(fā)布訂閱消息模式拦赠、主從復(fù)制茬祷、持久化等作為開發(fā)人員需要知道的功能。