1. 程式人生 > >Redis數據類型之散列(hash)

Redis數據類型之散列(hash)

str tab abs log aps 返回值 -s links 如果

1. 什麽是散列

散列類似於一個字典,是一個<K, V>對的集合,不過這個key和value都只能是字符串類型的,不能嵌套,可以看做Java中的Map<String, String>。

2. 基本操作

賦值

散列操作不區分插入和更新,當設置一個field的時候如果不存在的話表示新增,如果已經存在的話則表示更新,之前的值會被覆蓋掉。當設置值的時候如果field在之前不存在的話則返回1,視為新增,如果field已經存在的話,返回0,視為更新。

hset <key> <field> <value>

技術分享

第一次賦值的時候因為k1不存在,是新增field操作,返回值是1,第二次k1已經存在了,是更新操作,返回值是0.

使用hmset一次賦多個值:

hmset <key> <field> <value> [<field> <value> …]

技術分享

使用hsetnx只有當指定的field不存在時才賦值,這個是為了避免覆蓋掉已有的值:

hsetnx <key> <field> <value>

技術分享

返回值表示是否賦值成功,返回1表示這個field之前並不存在,此次賦值成功,返回0表示指定的field之前就已經存在,此次賦值失敗。

取值

hget一次取一個值,hmget一次取出多個值:

hget <key> <field>
hmget <key> <field> [<field> …]

技術分享

使用hgetall一次取出全部的field:

hgetall <key>

技術分享

判斷field是否已存在

hexists用於判斷在指定的hash表中某個field是否已存在:

hexists <key> <field>

技術分享

返回值是1或0,返回1表示指定的field已經存在,返回0表示不存在。

獲取hash表中的field個數

使用hlen獲取指定的hash表中field的個數:

hlen <key>

技術分享

field自增

使用hincrby對某個整數類型的field一次自增某個整數量:

hincrby <key> <field> <increment>

技術分享

獲取field及value

用於獲取hash表中的field集合和value集合:

hkeys <key>
hvals <key>

返回值是一個列表:

技術分享

刪除

要刪除hash表中的某個field,使用hdel:

hdel <key> <field> [<field> …]

技術分享

hdel的返回值是成功刪除的field的個數。

可以一次刪除多個filed:

技術分享

返回值是2表示成功刪除了兩個field。

要刪除hash表本身使用del命令:

技術分享

del是用於刪除key即hash表本身的,hdel是用於刪除hash表中的field的。

參考資料:

1. 《redis入門指南》 第二版

Redis數據類型之散列(hash)