相当于Map集合,key-map,这时候的值是一个map集合,本质和String没有区别,是一个key-value
127.0.0.1:6379> hset user1 name wangchangjun #设置user1 name
(integer) 1
127.0.0.1:6379> hget user1 name#获取user1 name
"wangchangjun"
127.0.0.1:6379> hmset user1 age 23 hobby swim location nanjing #设置user1 age、hobby、location的值
OK
127.0.0.1:6379> hmget user1 name age hobby location#获取user1 age、hobby、location的值
1) "wangchangjun"
2) "23"
3) "swim"
4) "nanjing"
127.0.0.1:6379> hgetall user1#获取user1全部的值
1) "name"
2) "wangchangjun"
3) "age"
4) "23"
5) "hobby"
6) "swim"
7) "location"
8) "nanjing"
127.0.0.1:6379>
127.0.0.1:6379> hgetall user1
1) "name"
2) "zhangsan"
3) "age"
4) "15"
5) "hobby"
6) "swim"
127.0.0.1:6379> hdel user1 name #删除user1中的name属性,对应的value也会被删除
(integer) 1
127.0.0.1:6379> hgetall user1 #查询后 删除成功
1) "age"
2) "15"
3) "hobby"
4) "swim"
127.0.0.1:6379>
127.0.0.1:6379> hgetall user1
1) "age"
2) "15"
3) "hobby"
4) "swim"
127.0.0.1:6379> hlen user1 #获取user1的长度(key的个数)
(integer) 2
127.0.0.1:6379>
127.0.0.1:6379> hgetall user1
1) "age"
2) "15"
3) "hobby"
4) "swim"
127.0.0.1:6379> hexists user1 age #获取user1中的age是否存在 存在则返回1
(integer) 1
127.0.0.1:6379> hexists user1 name#不存在则返回0
(integer) 0
127.0.0.1:6379>
127.0.0.1:6379> hgetall user1
1) "age"
2) "15"
3) "hobby"
4) "swim"
127.0.0.1:6379> hkeys user1 #获取所有的key
1) "age"
2) "hobby"
127.0.0.1:6379> hvals user1 #获取所有的values
1) "15"
2) "swim"
127.0.0.1:6379>
127.0.0.1:6379> hgetall hash
1) "age"
2) "15"
127.0.0.1:6379> hincrby hash age 2 #使hash中的age自增2
(integer) 17
127.0.0.1:6379> hincrby hash age -5 #使hash中的age自减5
(integer) 12
127.0.0.1:6379> hsetnx myhash name wang #如果不存在则创建,存在则创建失败
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "wang"
127.0.0.1:6379>
小结
hash存储的是容易变更的数据,尤其是用户信息之类的,经常变动的信息,更适合于对象的存储,String更适合于字符串的存储。