可以看做Map集合,key-map! 时候这个值是一个map集合!
本质和String类型没有太大区别,还是一个简单的 key-vlaue!
1、插入、获取、查看
- Hash插入值:
HSET KEY FIELD VALUE [FIELD VALUE......]
- Hash获取值:
HGET KEY FIELD
- Hash批量插入值:
HMSET KEY FIELD VALUE [FIELD VALUE......]
- Hash批量获取值:
HMGET KEY FIELD [FIELD......]
- Hash获取所有的值:
HGETALL KEY
127.0.0.1:6379> hset myhash field1 kuangshen # set一个具体 key-vlaue
(integer) 1
127.0.0.1:6379> hget myhash field1 # 获取一个字段值
"kuangshen"
127.0.0.1:6379> hmset myhash field1 hello field2 world # set多个 key-vlaue
OK
127.0.0.1:6379> hmget myhash field1 field2 # 获取多个字段值
1) "hello"
2) "world"
127.0.0.1:6379> hgetall myhash # 获取全部的数据,
1) "field1"
2) "hello"
3) "field2"
4) "world"
2、删除元素
- Hash删除元素:
HDEL KEY FIELD [FIELD......]
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
127.0.0.1:6379> HDEL myHash f2 # 删除hash指定key字段!对应的value值也就消失了!
(integer) 1
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
3、获取元素数量
- Hash元素的数量获取:
HLEN KEY
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
127.0.0.1:6379> HLEN myHash # 获取hash表的字段数量!
(integer) 2
4、判断元素存在
- 判断Hash中元素是否存在:
HEXISTS KEY FIELD
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
127.0.0.1:6379> HEXISTS myHash f1 # 判断hash中指定字段是否存在!
(integer) 1
127.0.0.1:6379> HEXISTS myHash f6
(integer) 0
5、获取所有元素,获取所有值
- 获取Hash中所有元素:
HKEYS KEY
- 获取Hash中所有元素的值:
HVALS KEY
# 只获得所有field
# 只获得所有value
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
127.0.0.1:6379> HKEYS myHash # 只获得所有field
1) "f1"
2) "f3"
127.0.0.1:6379> HVALS myHash # 只获得所有value
1) "v1"
2) "v3"
6、自增、自减
- Hash中元素自增:
HINCRBY KEY FIELD INCREMENT(正数)
- Hash中元素自减:
HINCRBY KEY FIELD INCREMENT(负数)
# incr decr
127.0.0.1:6379> hset myhash field3 5 #指定增量!
(integer) 1
127.0.0.1:6379> HINCRBY myhash field3 1 # 自增
(integer) 6
127.0.0.1:6379> HINCRBY myhash field3 -1 #自减
(integer) 5
127.0.0.1:6379> hsetnx myhash field4 hello # 如果不存在则可以设置 (integer) 1
127.0.0.1:6379> hsetnx myhash field4 world # 如果存在则不能设置 (integer) 0
7、是否存在
- Hash中元素是否存在:
HSETNX KEY FIELD VALUE
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
127.0.0.1:6379> HSETNX myHash f4 v4 # 如果不存在则可以设置
(integer) 1
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
7) "f4"
8) "v4"
127.0.0.1:6379> HSETNX myHash f1 v99 # 如果存在则不能设置
(integer) 0
127.0.0.1:6379> HSETNX myHash f1 v1
(integer) 0
总结
-
hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!
-
hash 更适合于对象的 存储
-
String更加适合字符串存储!