key - map[key]{value}

key - { key - value }

flushdb 开始。

添加/显示

1
2
3
4
5
6
7
8
9
# 添加 hset hash field1 value1 field2 value2 ...
hset hash 1 one 2 two 3 three
hmset hash 1 one 2 two 3 three #其实我不加m他也可以多个读取,不知道为啥,能用就行
hsetnx hash 1 one ....
# 获取某一个hash值
hget hash 1 # output : one
hmget hash 1 2 3 # output : one two three # 但是这里想要获取多个key就需要加m,qqgg
# 获取所有的值
hgetall hash # output : 1-one 2-two 3-three

删除

1
2
3
# 请根据上面的的context进行下面的操作
hdel hash 1
hgetall # 2-two 3-three

获取长度

确切来说是明白一个哈希中有多少个key

1
hlen hash # output : 2 

查询hash的某个key是否存在

1
hexists myhash key

只获取所有的key

1
hkeys hash  #output : 2 3 

只获取所有的value

1
hvals hash # output : two three 

自增自减

1
2
3
4
# 自增
hincrby hash key 1 # 1 表示这个value自增1
# 自减
hdecrby hash key 1 # 1 表示这个value自减1

对象设计

1
2
3
4
5
6
7
8
9
10
11
hmset hash user:1:name whz user:1:age 18 
hmget hash user:1:name user:1:age
# output :
[
{
"value": "whz"
},
{
"value": "18"
}
]

应用场景

淘宝购物车

key - {key - value}

userId - {商品id - 商品信息}

总结

尼玛 这个跟String一毛一样,就是String的value变成了 key-value形式

hash 更适合对象的存储

String 更适合字符串的存储