Redis學習筆記 - 數據類型與API(6)Hash

Hash (哈希)

經常使用命令

命令 含義 時間複雜度
hget、hset 設置、獲取hash key對應的field的value O(1)
hdel 刪除hash key對應的一個或多個field O(N),N 爲要刪除的域的數量
hexists 判斷hash key是否有指定的field O(1)
hlen 獲取hash key 的field的數量 O(1)
hmget、hmset 批量、獲取hash key的一批field對應的值 O(N),N 爲給定field的數量
hkeys、hvals、hgetall 返回hash key對應全部的field、value、field和value O(N),N 爲哈希表的大小
hsetnx 設置hash key 對應field (若是field已存在,則失敗) O(1)
hincrby、hincrbyfloat hash key 對應的field的value自增initCounter O(1)

hget、hset、hdel

  • hget key field (獲取hash key對應的field的value)
  • hset key field value (設置hash key 對應field的value)
  • hdel key field (刪除hash key 對應field的value)
127.0.0.1:6379> hset user:1:info age 23
(integer) 1
127.0.0.1:6379> hget user:1:info age
"23"
127.0.0.1:6379> hset user:1:info name ronaldo
(integer) 1
127.0.0.1:6379> hgetall user:1:info
1) "age"
2) "23"
3) "name"
4) "ronaldo"
127.0.0.1:6379> hdel user:1:info age
(integer) 1
127.0.0.1:6379> hgetall user:1:info
1) "name"
2) "ronaldo"

hexists、hlen

  • hexists key field (判斷hash key是否有指定的field)
  • hlen key (獲取hash key 的field的數量)
127.0.0.1:6379> hgetall user:1:info
1) "name"
2) "ronaldo"
127.0.0.1:6379> hexists user:1:info name
(integer) 1
127.0.0.1:6379> hexists user:1:info age
(integer) 0
127.0.0.1:6379> hlen user:1:info
(integer) 1

hmget、hmset

  • hmget key field1 field2 field3 ... (批量獲取hash key的一批field對應的值)
  • hmset key field1 value1 field2 value2 ... (批量設置hash key的一批field value)

hgetall、hvals、hkeys

  • hkeys key (返回hash key 對應全部field)
  • hvals key (返回hash key 對應全部field的value)
  • hgetall key (返回hash key 對應全部的field和value)
127.0.0.1:6379> hmset user:2:info age 30 name kaka page 50
OK
127.0.0.1:6379> hgetall user:2:info
1) "age"
2) "30"
3) "name"
4) "kaka"
5) "page"
6) "50"
127.0.0.1:6379> hkeys user:2:info
1) "age"
2) "name"
3) "page"
127.0.0.1:6379> hvals user:2:info
1) "30"
2) "kaka"
3) "50"

hsetnx、hincrby、hincrbyfloat

  • hsetnx key field value (設置hash key 對應field (若是field已存在,則失敗))
  • hincrby key field initCounter (hash key 對應的field的value自增initCounter)
  • hincrbyfloat key field floatCounter (hincrby浮點數版)

更多 Hash 相關命令:http://www.redis.cn/commands....

實戰

  • 記錄網站每一個用戶我的主頁的訪問量
hincrby user:1:info pageview count
  • 緩存視頻對象基本信息

String vs Hash

類似的API

String Hash
get hget
set、setnx hset、hsetnx
del hdel
incr、incrby、decr、decrby hincrby
mset hmset
mget hmget

相關內容:

Redis學習筆記 - 數據類型與API(1)Key
Redis學習筆記 - 數據類型與API(2)String
Redis學習筆記 - 數據類型與API(3)List
Redis學習筆記 - 數據類型與API(4)Set
Redis學習筆記 - 數據類型與API(5)Sorted Set
Redis學習筆記 - 數據類型與API(6)Hashhtml

相關文章
相關標籤/搜索