Redis hash 指令
下表列出了 redis hash 基本的相關指令:
序号 | 指令及描述 |
---|---|
1 | HDEL key field1 [field2] 删除一個或多個哈希表字段 |
2 | HEXISTS key field 檢視哈希表 key 中,指定的字段是否存在。 |
3 | HGET key field 擷取存儲在哈希表中指定字段的值。 |
4 | HGETALL key 擷取在哈希表中指定 key 的所有字段和值 |
5 | HINCRBY key field increment 為哈希表 key 中的指定字段的整數值加上增量 increment 。 |
6 | HINCRBYFLOAT key field increment 為哈希表 key 中的指定字段的浮點數值加上增量 increment 。 |
7 | HKEYS key 擷取所有哈希表中的字段 |
8 | HLEN key 擷取哈希表中字段的數量 |
9 | HMGET key field1 [field2] 擷取所有給定字段的值 |
10 | HMSET key field1 value1 [field2 value2 ] 同時将多個 field-value (域-值)對設定到哈希表 key 中。 |
11 | HSET key field value 将哈希表 key 中的字段 field 的值設為 value 。 |
12 | HSETNX key field value 隻有在字段 field 不存在時,設定哈希表字段的值。 |
13 | HVALS key 擷取哈希表中所有值 |
14 | HSCAN key cursor [MATCH pattern] [COUNT count] 疊代哈希表中的鍵值對。 |
示例如下:
127.0.0.1:6379> HSET user name zhangsan
(integer) 1
127.0.0.1:6379> HGETALL user
1) "name"
2) "zhangsan"
127.0.0.1:6379> hest user age 38
(error) ERR unknown command `hest`, with args beginning with: `user`, `age`, `38`,
127.0.0.1:6379> hset user age 38
(integer) 1
127.0.0.1:6379> HGETALL user
1) "name"
2) "zhangsan"
3) "age"
4) "38"
127.0.0.1:6379> HGET user name
"zhangsan"
127.0.0.1:6379> hmget name age
1) (nil)
127.0.0.1:6379> hmget user name age
1) "zhangsan"
2) "38"
127.0.0.1:6379> HLEN user
(integer) 2
127.0.0.1:6379> HEXISTS user name
(integer) 1
127.0.0.1:6379> HKEYS user
1) "name"
2) "age"
127.0.0.1:6379> HVALS user
1) "zhangsan"
2) "38"
127.0.0.1:6379> HINCRBY user age 2
(integer) 40
127.0.0.1:6379> HVALS user
1) "zhangsan"
2) "40"
127.0.0.1:6379>
hash 類型應用場景 :
簡單示範:
127.0.0.1:6379> hset u1 g01 100 g02 200
(integer) 2
127.0.0.1:6379> HGETALL u1
1) "g01"
2) "100"
3) "g02"
4) "200"
127.0.0.1:6379> HMSET u2 g01 100 g02 100
OK
127.0.0.1:6379> HGETALL u2
1) "g01"
2) "100"
3) "g02"
4) "100"
127.0.0.1:6379> hset u1 g03 5
(integer) 1
127.0.0.1:6379> HGETALL u1
1) "g01"
2) "100"
3) "g02"
4) "200"
5) "g03"
6) "5"
127.0.0.1:6379> hdel u1 g01
(integer) 1
127.0.0.1:6379> HGETALL u1
1) "g02"
2) "200"
3) "g03"
4) "5"
127.0.0.1:6379> HINCRBY g02 100
(error) ERR wrong number of arguments for 'hincrby' command
127.0.0.1:6379> HINCRBY u1 g02 100
(integer) 300
127.0.0.1:6379> HGETALL u1
1) "g02"
2) "300"
3) "g03"
4) "5"
127.0.0.1:6379> HMSET u3 g01:nums 100 g01:info {.....}
OK
127.0.0.1:6379> HGETALL u3
1) "g01:nums"
2) "100"
3) "g01:info"
4) "{.....}"
127.0.0.1:6379> HMSET u3 g02:nums 200 g02:info {.....}
OK
127.0.0.1:6379> HGETALL u3
1) "g01:nums"
2) "100"
3) "g01:info"
4) "{.....}"
5) "g02:nums"
6) "200"
7) "g02:info"
8) "{.....}"
127.0.0.1:6379>
解決方案
以客戶id作為key,每位客戶建立一個hash存儲結構存儲對應的購物車資訊
将商品編号作為field,購買數量作為value進行存儲
添加商品:追加全新的field與value
浏覽:周遊hash
更改數量:自增/自減,設定value值
删除商品:删除field
清空:删除key
當購物車儲存商家資訊的時候,可以把商家資訊儲存成一個Hash,把标記存到購物車的Hash種就可以了
業務場景
雙11活動日,銷售手機儲值卡的商家對移動、聯通、電信的30元、 50元、 100元商品推出搶購活動,每種商
品搶購上限1000張
127.0.0.1:6379> hmset p01 c30 1000 c50 1000
OK
127.0.0.1:6379> HINCRBY p01 c30 -20
(integer) 980
127.0.0.1:6379> HGETALL p01
1) "c30"
2) "980"
3) "c50"
4) "1000"
127.0.0.1:6379>