原創作品,轉載請標明:http://blog.csdn.net/Xiejingfa/article/details/50550416
在上一篇文章中【Redis筆記(二)】 Redis資料結構-string字串中,我們學習了Redis最基本的資料結構string,今天我們的主角是 – hash(雜湊)類型。 hash類型介紹
hash是Redis2.0後增加的一種資料類型,類似大多數程式設計語言中的map資料結構一樣,Redis是索引值對的集合,也就是說它存放的是字串和字串之間的映射。由於這個特性,hash特別適用於儲存一個對象。將一個Object Storage Service在hash中會佔用更少的記憶體,並且可以方便地存取整個對象。
hash的主要命令可以在這裡查詢。 hash的相關命令 1、hset命令
hset命令用來將某個hash指定鍵的值,如果鍵不存在,則建立並設定對應的值,返回一個整數1,如果鍵已經存在,則對應的值將被覆蓋並返回整數0。具體格式為:
hset hash_name field value
樣本1:
127.0.0.1:6379> hset myhash name fred(integer) 1127.0.0.1:6379> hset myhash name fred2(integer) 0
2、hmset命令
hmset命令和hset命令的作用相似,可以用來設定hash的鍵和值。不同的是hmset可以同時設定多個索引值對。操作成功後hmset命令返回一個簡單的字串“OK”。具體格式如下:
hmset hash_name field1 value1 field2 value2...
樣本2:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hget myhash name"fred"127.0.0.1:6379> hget myhash age"24"
3、hsetnx命令
hsetnx命令也用來在指定鍵不存在的情況下設定索引值資訊。如果鍵不存在,則Redis會先建立鍵,然後設定對應的值,操作成功後返回整數1。如果該鍵已經存在,則該命令不進行任何操作,傳回值為0。具體格式如下:
hsetnx hash_name field value
樣本3:
127.0.0.1:6379> hsetnx myhsh address hangzhou(integer) 1127.0.0.1:6379> hsetnx myhsh address guangzhou(integer) 0127.0.0.1:6379> hget myhsh address"hangzhou"
4、hget命令
hget命令用來擷取某個hash指定key的值。如果該鍵存在,直接返回對應的值,否則返回nil。具體格式如下:
hget hash_name field
樣本4:
127.0.0.1:6379> hset myhash name fred(integer) 0127.0.0.1:6379> hget myhash name"fred"127.0.0.1:6379> hget myhash nonkey(nil)
5、hmget命令
hmget命令和hget命令類似,用來返回某個hash多個鍵的值的列表,對於不存在的鍵,返回nil值。具體格式如下:
hmget hash_name field1 field2...
樣本5:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hmget myhash name age weight1) "fred"2) "24"3) (nil)
6、hexists命令
hexists命令用來判斷某個hash指定鍵是否存在,若存在返回整數1,否則返回0。具體格式如下:
hexists hash_name field
樣本6:
127.0.0.1:6379> hset myhash name fred(integer) 0127.0.0.1:6379> hexists myhash name(integer) 1127.0.0.1:6379> hexists myhash home(integer) 0
7、hlen命令
hlen命令用來返回某個hash中所有鍵的數量。具體格式如下:
hlen hash_name
樣本7:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hlen myhash(integer) 2127.0.0.1:6379> hlen nonhash(integer) 0
8、hdel命令
hdel命令用來刪除某個hash指定的鍵。如果該鍵不存在,則不進行任何操作。hdel命令的傳回值是成功刪除的鍵的數量(不包括不存在的鍵)。具體格式為:
hdel hash_name field:
樣本8:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hdel myhash name age(integer) 2127.0.0.1:6379> hmget myhash name age1) (nil)2) (nil)
9、hkeys命令
hkeys命令返回某個hash的所有鍵,如果該hash不存在任何鍵則返回一個空列表。具體格式如下:
hkeys hash_name
樣本9:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hkeys myhash1) "name"2) "age"127.0.0.1:6379> hdel myhash name age(integer) 2127.0.0.1:6379> hkeys myhash(empty list or set)
10、hvals命令
hvals命令返回某個hash的所有值的列表。具體格式如下:
hvals hash_name
樣本10:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hvals myhash1) "fred"2) "24"
11、hgetall命令
hgetall命令返回一個列表,該列表包含了某個hash的所有鍵和值。在傳回值中,先是鍵,接下來的一個元素是對應的值,所以hgetall命令返回的列表長度是hash大小的兩倍。具體格式如下:
hgetall hash_name
樣本11:
127.0.0.1:6379> hmset myhash name fred age 24OK127.0.0.1:6379> hgetall myhash1) "name"2) "fred"3) "age"4) "24"
12、hincrby命令和hincrbyfloat命令
這兩個命令都用來對指定鍵進行增量操作,不同的是hincrby命令每次加上一個整數值,而hincrbyfloat命令每次加上一個浮點值。操作成功後返回增量操作後的最終值。具體格式如下:
hincrby hash_name field khincrbyfloat hash_name field k
樣本12:
127.0.0.1:6379> hset myhash age 24(integer) 0127.0.0.1:6379> hincrby myhash age 2(integer) 26127.0.0.1:6379> hincrby myhash age -2(integer) 24