Redis中散列類型的常用命令小結_Redis

來源:互聯網
上載者:User

Redis散列類型

Redis是採用字典結構以索引值對的形式儲存資料的,而散列類型(hash)的索引值也是一種字典結構,其儲存了欄位和欄位值的映射,但欄位值只能是字串,不支援其他資料類型,也就是說,散列類型不能嵌套其他的資料類型。一個散列類型鍵可以包含至多2^32-1個欄位。

除了散列類型,Redis的其他資料類型同樣不支援資料類型嵌套。比如集合類型的每個元素只能是字串,不能是一個集合或者散列表等。

散列類型適合儲存物件:使用物件類別和ID構成建名,使用欄位表示對象的屬性,而欄位值儲存屬性值。例如要儲存ID為2的汽車對象,可以分別使用名為color、name和price的三個欄位來儲存該汽車的顏色、名稱和價格。

1、基本命令

例如現在要儲存ID為1的文章,分別有title、author、time、content

則鍵為post:1,欄位分別為title、author、time、content,值分別為“the first post”、“me”、“2014-03-04”、“This is my first post.”,儲存如下

redis 127.0.0.1:6379> hmset post:1 title "the first post" author "JoJo" time 2016/08/25 content "this is my first post"OK

這裡使用的是hmset命令,具體散列的基本賦值命令如下:

hset key field value   #例如hset post:2 title “second post”

hget key field             #例如hget post:2 title,擷取id為2的post的title值

hmset key field value [field value ...]  #這個同上,批量存值

hmget key field [field ...]                      #批量取值,取得列表

例:

redis 127.0.0.1:6379> hmget post:1 time author1) "2016/08/25"2) "JoJo"

hgetall key                  #取得key所對應的所有索引值列表,這裡給出個例子

redis 127.0.0.1:6379> hgetall post:11) "title"2) "the first post"3) "author"4) "JoJo"5) "time"6) "2016/08/25"7) "content"8) "this is my first post"

 2、判斷是否存在

hexists key field

如果存在返回1,否則返回0(如果鍵不存在也返回0)。

3、當欄位不存在時賦值

hsetnx key field value

這個和hset的區別就是如果欄位存在,這個命令將不執行任何操作,但是這裡有一個區別就是Redis提供的這些命令都是原子操作,不會產生資料不一致問題。

例:

redis 127.0.0.1:6379> hexists post:1 time(integer) 1  //判斷是存在time欄位的redis 127.0.0.1:6379> hsetnx post:1 time 2016/08/26(integer) 0  //不存在的話,設定time,存在的話返回0,值不變,原始值redis 127.0.0.1:6379> hget post:1 time"2016/08/25"redis 127.0.0.1:6379> hsetnx post:1 age 23(integer) 1   //不存在age欄位,返回1,並設定age欄位redis 127.0.0.1:6379> hget post:1 age"23"

4、增加數字

hincrby key field number

這裡就和incry命令類似了。

例:

redis 127.0.0.1:6379> hincrby post:1 age 2(integer) 25

5、刪除欄位

hdel key field [field ...]

刪除欄位,一個或多個,傳回值是被刪除欄位的個數。

6、其他命令

hkeys key    #擷取欄位名

hvals key    #擷取欄位名

樣本如下:

redis 127.0.0.1:6379> hkeys post:11) "title"2) "author"3) "time"4) "content"5) "age"redis 127.0.0.1:6379> hvals post:11) "the first post"2) "JoJo"3) "2016/08/25"4) "this is my first post"5) "25"

最後還有一個就是擷取欄位數量的命令:

hlen key

返回欄位的數量

redis 127.0.0.1:6379> hlen post:1(integer) 5

總結

以上就是Redis中散列類型常用命令的全部內容了,希望能對大家的學習或者工作帶來一定的協助,如果有疑問大家可以留言交流。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.