- N +

redis數(shù)據(jù)類(lèi)型有哪些,redis支持的五種數(shù)據(jù)類(lèi)型

很多朋友對(duì)于redis數(shù)據(jù)類(lèi)型有哪些和redis支持的五種數(shù)據(jù)類(lèi)型不太懂,今天就由小編來(lái)為大家分享,希望可以幫助到大家,下面一起來(lái)看看吧!

redis哪些數(shù)據(jù)類(lèi)型要序列化

connection.sAdd(key,list.toArray())

Redis方法支持多參數(shù),只要轉(zhuǎn)成數(shù)組就行了,前提是放入的單個(gè)對(duì)象也已經(jīng)序列化。

或者把整個(gè)數(shù)組先用json工具序列化成字符串存儲(chǔ)

redis可以存儲(chǔ)哪些數(shù)據(jù)類(lèi)型

redis開(kāi)創(chuàng)了一種新的數(shù)據(jù)存儲(chǔ)思路,使用redis,我們不用在面對(duì)功能單調(diào)的數(shù)據(jù)庫(kù)時(shí),把精力放在如何把大象放進(jìn)冰箱這樣的問(wèn)題上,而是利用redis靈活多變的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作,為不同的大象構(gòu)建不同的冰箱。 redis常用數(shù)據(jù)類(lèi)型 redis最為常用的數(shù)據(jù)類(lèi)型主要有以下五種:string、hash、list、set、sortedset

redis有哪些數(shù)據(jù)類(lèi)型

redis目前能夠在緩存領(lǐng)域迅速蠶食鯨吞memcached的市場(chǎng)占比,能夠在分布式架構(gòu)中扮演重要的地位,都與其支持多種數(shù)據(jù)類(lèi)型(而memcached只支持一種)這個(gè)優(yōu)勢(shì)有關(guān)。

redis支持存儲(chǔ)的數(shù)據(jù)類(lèi)型一共有5種,但是根據(jù)我的工作經(jīng)驗(yàn),最常用的只有三種,接下來(lái),我就介紹下最常用的三種。

List

list是redis中常用的數(shù)據(jù)類(lèi)型,能夠進(jìn)行頭尾查找,插入,移除(lpop,lpush,rpop,rpush等等);

支持像Python一樣的分片讀取(lrangeapi);

可以按照索引查找隊(duì)列中元素(lindex),刪除隊(duì)列中元素(lrem),修改隊(duì)列中元素(lset),還能獲取隊(duì)列長(zhǎng)度(llen)。

list還有一個(gè)更加突出的功能,它可以從當(dāng)前隊(duì)列彈出一個(gè)值,然后插入到另一個(gè)隊(duì)列中(BRPOPLPUSH)。這個(gè)過(guò)程是原子的,保證了數(shù)據(jù)一致性,避免由于中間步驟失敗而導(dǎo)致數(shù)值丟失。

Set

set其實(shí)和list類(lèi)似,但是正如平時(shí)我們了解的set,首先它的存儲(chǔ)是無(wú)序的,其次它的存儲(chǔ)是去重的。也就是說(shuō),如果你需要記錄數(shù)據(jù)的插入順序,或者可能會(huì)插入重復(fù)數(shù)據(jù),并且數(shù)據(jù)不可去重的話,用list就更合適些,其它場(chǎng)景,就可以考慮用set。

set可以進(jìn)行基礎(chǔ)的增刪(sadd,srem),也能進(jìn)行進(jìn)行集合操作,比如求差集(sdiff),求交集(sinter),求并集(sunion),返回集合中全部元素,但是并不將它們彈出(smember)。同時(shí)set也支持像list一樣,用一個(gè)原子操作,把一個(gè)元素從當(dāng)前set彈出,并壓入另一個(gè)set(smove)。

hash

hash是redis中最常用的一種數(shù)據(jù)結(jié)構(gòu),其實(shí)就是我們常說(shuō)的map。

它是一個(gè)string型的key-value,因此特別適用于存儲(chǔ)序列化對(duì)象。理論上,每個(gè)hash可以存儲(chǔ)40多億個(gè)鍵值對(duì)。

hash的操作api要比set和list多了不少。

基礎(chǔ)的有hset,hget,hdel,hexist(檢查元素是否存在),hincrby(這個(gè)是為指定的整數(shù)字段加指定數(shù)值,相當(dāng)于能夠原子性的做到查找和修改,減少了我們自己去實(shí)現(xiàn)的麻煩)。

hash還有hgetAll,hgetKeys這種接口,能夠批量的把hash中指定字段的全部?jī)?nèi)容都拉取回來(lái)。但是要慎用,我曾親身經(jīng)歷過(guò),在server高并發(fā)情況下,會(huì)導(dǎo)致server出現(xiàn)OOM。

除了上面介紹的常用的三種,redis還支持String和sortedset,但是由于不太常用,因此不在此介紹了。

以上是我的淺見(jiàn),歡迎各位在下方評(píng)論區(qū)交流點(diǎn)贊。

我是蘇蘇思量,來(lái)自BAT的Java開(kāi)發(fā)工程師,每日分享科技類(lèi)見(jiàn)聞,歡迎關(guān)注我,與我共同進(jìn)步。

好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!

返回列表
上一篇:
下一篇: