redis的七種資料結構

2021-08-16 23:39:06 字數 2267 閱讀 7202



【it168 技術】長生劍、孔雀翎、碧玉刀、多情環、離別鉤、霸王槍、拳頭是古龍筆下的七種**,而本文打算將redis的幾種使用方式 strings、hashs、lists、sets、sorted sets、pub/sub、transactions 也比作七種**,為大家講解redis七種特性,並列舉其適合的應用場景。

**一:strings

strings 資料結構是簡單的key-value型別,value其實不僅是string,也可以是數字。使用strings型別,你可以完全實現目前 memcached 的功能,並且效率更高。還可以享受redis的定時持久化,操作日誌及 replication等功能。除了提供與 memcached 一樣的get、set、incr、decr 等操作外,redis還提供了下面一些操作:

·獲取字串長度

·設定和獲取字串的某一段內容

·設定及獲取字串的某一位(bit)

·批量設定一系列字串的內容

**二:hashs

在memcached中,我們經常將一些結構化的資訊打包成hashmap,在客戶端序列化後儲存為乙個字串的值,比如使用者的暱稱、年齡、性別、積分等,這時候在需要修改其中某一項時,通常需要將所有值取出反序列化後,修改某一項的值,再序列化儲存回去。這樣不僅增大了開銷,也不適用於一些可能併發操作的場合(比如兩個併發的操作都需要修改積分)。而redis的hash結構可以使你像在資料庫中update乙個屬性一樣只修改某一項屬性值。

**三:lists

lists 就是鍊錶,相信略有資料結構知識的人都應該能理解其結構。使用lists結構,我們可以輕鬆地實現最新訊息排行等功能。lists的另乙個應用就是訊息佇列,可以利用lists的push操作,將任務存在lists中,然後工作執行緒再用pop操作將任務取出進行執行。redis還提供了操作lists中某一段的api,你可以直接查詢,刪除lists中某一段的元素。

**四:sets

sets 就是乙個集合,集合的概念就是一堆不重複值的組合。利用redis提供的sets資料結構,可以儲存一些集合性的資料,比如在微博應用中,可以將乙個使用者所有的關注人存在乙個集合中,將其所有粉絲存在乙個集合。redis還為集合提供了求交集、並集、差集等操作,可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到乙個新的集合中。

**五:sorted sets

和sets相比,sorted sets增加了乙個權重引數score,使得集合中的元素能夠按score進行有序排列,比如乙個儲存全班同學成績的sorted sets,其集合value可以是同學的學號,而score就可以是其考試得分,這樣在資料插入集合的時候,就已經進行了天然的排序。另外還可以用sorted sets來做帶權重的佇列,比如普通資訊的score為1,重要訊息的score為2,然後工作執行緒可以選擇按score的倒序來獲取工作任務。讓重要的任務優先執行。

**六:pub/sub

pub/sub 從字面上理解就是發布(publish)與訂閱(subscribe),在redis中,你可以設定對某乙個key值進行訊息發布及訊息訂閱,當乙個key值上進行了訊息發布後,所有訂閱它的客戶端都會收到相應的訊息。這一功能最明顯的用法就是用作實時訊息系統,比如普通的即時聊天,群聊等功能。

**七:transactions

誰說nosql都不支援事務,雖然redis的transactions提供的並不是嚴格的acid的事務(比如一串用exec提交執行的命令,在執行中伺服器宕機,那麼會有一部分命令執行了,剩下的沒執行),但是這個transactions還是提供了基本的命令打包執行的功能(在伺服器不出問題的情況下,可以保證一連串的命令是順序在一起執行的,中間有會有其它客戶端命令插進來執行)。redis還提供了乙個watch功能,你可以對乙個key進行watch,然後再執行transactions,在這過程中,如果這個watched的值進行了修改,那麼這個transactions會發現並拒絕執行。

Redis五種資料結構

redis除了儲存鍵之外還可以儲存常見的5種資料型別,分別是 string list set zset hash。結構型別 結構儲存的值 結構的讀寫能力 string字串 可以是字串 整數或浮點數 對整個字串或字串的一部分進行操作 對整數或浮點數進行自增或自減操作 list列表 乙個鍊錶,鍊錶上的每...

Redis五種資料結構

對redis來說,所有的key 鍵 都是字串,所謂的5種資料結構是指針對value而言 資料結構型別 說明使用場景 常用方法 其他鏈結 string字串型別1 redis中最基本的資料型別,乙個key對應乙個value。2 是二進位制安全的,意思是 redis 的 string 可以包含任何資料。如...

Redis的5種資料結構

參考 基本型別有5個,string,mapmap,list,set,zset 從上到下一一對應,這是我取得別名 string 就是儲存二進位製流,這時候,jpg等,只要轉碼成功,均可儲存。mapmap 之所以叫mapmap,是因為,redis本身就是個map,而且儲存的不僅僅是乙個map,而是。ma...