用了這么久redis惧浴,你了解幾種redis數(shù)據(jù)類(lèi)型

簡(jiǎn)單介紹一下redis的幾種數(shù)據(jù)類(lèi)型: StringsLists奕剃,Sets衷旅, HasheSorted sets纵朋,Bitmaps and HyperLogLogs

Strings

Strings是redis的最基礎(chǔ)的類(lèi)型柿顶,意味著reds stings可以包含任何數(shù)據(jù)類(lèi)型,普通的string操软,integer…自不必說(shuō)嘁锯,JPEG 圖片,Java對(duì)象聂薪,文件等等都可以序列化成strings家乘。

最大限制:512M

常用操作:

  • INCR, DECR, INCRBY:通過(guò)strings實(shí)現(xiàn)原子化操作
  • APPEND:改變字符串
  • GETRANGE , SETRANGE: 自由獲取或者變更Strings
  • GETBIT, SETBIT:對(duì)Strings進(jìn)行位操作,如通過(guò)redis創(chuàng)建一個(gè)bloom filter

其他: available string commands

Lists

Redis Lists是strings的集合list藏澳,順序?yàn)樵氐牟迦腠樞蛉示狻.?dāng)然也可以通過(guò)命令在head或者tail插入元素。即使list很大翔悠,在head或者tail增刪元素的速度也很快业崖,但是如果操作中間的元素,則復(fù)雜度為O(N)蓄愁。

lists最大長(zhǎng)度: 2^32 - 1 (4294967295双炕, 也就是每個(gè)list可以存40億個(gè)元素)

有意思的案例:

  • 創(chuàng)建設(shè)計(jì)網(wǎng)絡(luò)中的時(shí)間線,使用 LPUSH 增加元素撮抓,而使用LRANGE獲取最新插入的幾個(gè)元素
  • 使用 LPUSHLTRIM 創(chuàng)建一個(gè)固定容量的list妇斤,只記錄最新的幾個(gè)元素
  • 使用list結(jié)構(gòu)創(chuàng)建一個(gè)消息隊(duì)列,如ruby的Resque - 用于創(chuàng)建后臺(tái)任務(wù)
  • BLPOP

其他: available commands operating on lists

Sets

Redis Sets是strings的無(wú)序無(wú)重復(fù)集合丹拯。增刪查的復(fù)雜度是0(1)站超,基于sets可以做 unions, intersections 等操作

sets最大長(zhǎng)度: 2^32 - 1 (4294967295, 也就是每個(gè)set可以存40億個(gè)元素)

一些案例:

  • trace 一些唯一事件咽笼,比如說(shuō)記錄一篇blog的訪問(wèn)ip顷编,僅僅只需要使用 SADD 戚炫,而不需要考慮是否重復(fù)剑刑。
  • 創(chuàng)建一個(gè)標(biāo)簽系統(tǒng),給對(duì)象標(biāo)記不同的tag
  • 使用 SPOP 或者 SRANDMEMBER 命令從一個(gè)set中隨機(jī)抽取元素
  • 其他: full list of Set commands

Hashes

Redis Hashes 是用來(lái)存儲(chǔ)一些鍵值對(duì)的,舉個(gè)栗子:

@cli
HMSET user:1000 username antirez password P1pp0 age 34
HGETALL user:1000
HSET user:1000 password 12345
HGETALL user:1000

每一個(gè)hash都可以存儲(chǔ)至多 2^32 - 1個(gè) 鍵值對(duì)

其他: full list of Hash commands

Sorted sets

redis Sorted Sets 和sets類(lèi)型相似施掏,但最大的不同點(diǎn)是 Sorted Set 的每一個(gè)元素都有一個(gè)分值钮惠,這個(gè)分值可以用作排序,雖然元素是不重復(fù)的七芭,但分值可能相同素挽。可以獲取不同分值段內(nèi)的一些元素狸驳。

sorted sets 可以做很多有意思的事情预明,與直接操作數(shù)據(jù)庫(kù)相比,有很好的性能

  • 比如設(shè)計(jì)一個(gè)在線游戲的選手積分榜耙箍,使用ZADD來(lái)增加一個(gè)新的記錄撰糠,使用 ZRANGE 獲取前幾名的選手,也可以使用 ZRANGE來(lái)獲取一個(gè)選手的排名辩昆。使用ZRANK 和 ZRANGE可以吃很快查詢到一個(gè)元素附近的幾個(gè)元素
  • Sorted Sets常常被用來(lái)做作redis中的索引數(shù)據(jù)阅酪,比如有很多用戶的hash數(shù)據(jù),可以使用用戶的年齡作為分值汁针,用戶id作為值术辐,使用ZRANGEBYSCORE就可以吃很快查詢出一個(gè)年齡區(qū)間內(nèi)的用戶

其他:full list of Sorted Set commands

Bitmaps and HyperLogLogs

Redis 同時(shí)也支持Bitmaps 和 HyperLogLogs,基于Strings實(shí)現(xiàn)施无,但有他們自己的語(yǔ)義辉词。

其他:introduction to Redis data types

推薦的redisdocs:

本文由 歧途老農(nóng) 創(chuàng)作,采用 CC BY 4.0 CN 協(xié)議 進(jìn)行許可猾骡。 可自由轉(zhuǎn)載较屿、引用,但需署名作者且注明文章出處卓练。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隘蝎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子襟企,更是在濱河造成了極大的恐慌嘱么,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽悼,死亡現(xiàn)場(chǎng)離奇詭異曼振,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蔚龙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)冰评,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人木羹,你說(shuō)我怎么就攤上這事甲雅〗馑铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵抛人,是天一觀的道長(zhǎng)弛姜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)妖枚,這世上最難降的妖魔是什么廷臼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮绝页,結(jié)果婚禮上荠商,老公的妹妹穿的比我還像新娘。我一直安慰自己续誉,他們只是感情好结啼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著屈芜,像睡著了一般郊愧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上井佑,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天属铁,我揣著相機(jī)與錄音,去河邊找鬼躬翁。 笑死焦蘑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盒发。 我是一名探鬼主播例嘱,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宁舰!你這毒婦竟也來(lái)了拼卵?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛮艰,失蹤者是張志新(化名)和其女友劉穎腋腮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體壤蚜,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡即寡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了袜刷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聪富。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖著蟹,靈堂內(nèi)的尸體忽然破棺而出墩蔓,到底是詐尸還是另有隱情梢莽,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布钢拧,位于F島的核電站,受9級(jí)特大地震影響炕横,放射性物質(zhì)發(fā)生泄漏源内。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一份殿、第九天 我趴在偏房一處隱蔽的房頂上張望膜钓。 院中可真熱鬧,春花似錦卿嘲、人聲如沸颂斜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沃疮。三九已至,卻和暖如春梅肤,著一層夾襖步出監(jiān)牢的瞬間司蔬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工姨蝴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俊啼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓左医,卻偏偏與公主長(zhǎng)得像授帕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浮梢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355