老鐵們,大家好,相信還有很多朋友對于redis五種數據類型和列舉Redis常見的五種樹的相關問題不太懂,沒關系,今天就由我來為大家分享分享redis五種數據類型以及列舉Redis常見的五種樹的問題,文章篇幅可能偏長,希望可以幫助到大家,下面一起來看看吧!
redis有哪些數據類型
redis目前能夠在緩存領域迅速蠶食鯨吞memcached的市場占比,能夠在分布式架構中扮演重要的地位,都與其支持多種數據類型(而memcached只支持一種)這個優勢有關。
redis支持存儲的數據類型一共有5種,但是根據我的工作經驗,最常用的只有三種,接下來,我就介紹下最常用的三種。
Listlist是redis中常用的數據類型,能夠進行頭尾查找,插入,移除(lpop,lpush,rpop,rpush等等);
支持像Python一樣的分片讀取(lrangeapi);
可以按照索引查找隊列中元素(lindex),刪除隊列中元素(lrem),修改隊列中元素(lset),還能獲取隊列長度(llen)。
list還有一個更加突出的功能,它可以從當前隊列彈出一個值,然后插入到另一個隊列中(BRPOPLPUSH)。這個過程是原子的,保證了數據一致性,避免由于中間步驟失敗而導致數值丟失。
Setset其實和list類似,但是正如平時我們了解的set,首先它的存儲是無序的,其次它的存儲是去重的。也就是說,如果你需要記錄數據的插入順序,或者可能會插入重復數據,并且數據不可去重的話,用list就更合適些,其它場景,就可以考慮用set。
set可以進行基礎的增刪(sadd,srem),也能進行進行集合操作,比如求差集(sdiff),求交集(sinter),求并集(sunion),返回集合中全部元素,但是并不將它們彈出(smember)。同時set也支持像list一樣,用一個原子操作,把一個元素從當前set彈出,并壓入另一個set(smove)。
hashhash是redis中最常用的一種數據結構,其實就是我們常說的map。
它是一個string型的key-value,因此特別適用于存儲序列化對象。理論上,每個hash可以存儲40多億個鍵值對。
hash的操作api要比set和list多了不少。
基礎的有hset,hget,hdel,hexist(檢查元素是否存在),hincrby(這個是為指定的整數字段加指定數值,相當于能夠原子性的做到查找和修改,減少了我們自己去實現的麻煩)。
hash還有hgetAll,hgetKeys這種接口,能夠批量的把hash中指定字段的全部內容都拉取回來。但是要慎用,我曾親身經歷過,在server高并發情況下,會導致server出現OOM。
除了上面介紹的常用的三種,redis還支持String和sortedset,但是由于不太常用,因此不在此介紹了。
以上是我的淺見,歡迎各位在下方評論區交流點贊。
我是蘇蘇思量,來自BAT的Java開發工程師,每日分享科技類見聞,歡迎關注我,與我共同進步。
j2cache里redis里實用的數據類型為什么不用hash
如果不使用hash,要清除某個range里的所有緩存,似乎得先keys()然后一個個刪除,如果keys()返回太多,速度會很慢。
好了,文章到此結束,希望可以幫助到大家。