这里我们来学习redis的第四个数据类型:hash
Redis中的hash我们可以将其想象成为一个map集合,也就是说redis-key存储的是一个map集合,map集合中有自己的key-value
Hash一般用来存储对象的字段和值,如存储用户信息、配置信息等。
Hash更适合对象的存储,String更适合字符串的存储
1:hset设置hash值
127.0.0.1:6379> hset hash1 name camellia age 29 height 179 weight 85
(integer) 4
127.0.0.1:6379> hget hash1 name
"camellia"
127.0.0.1:6379> hgetall hash1
1) "name"
2) "camellia"
3) "age"
4) "29"
5) "height"
6) "179"
7) "weight"
8) "85"
2:hmset 批量设置hash值
127.0.0.1:6379> hmset hash1 name camellia age 29 height 179 weight 85
(integer) 4
127.0.0.1:6379> hget hash1 name
"camellia"
127.0.0.1:6379> hgetall hash1
1) "name"
2) "camellia"
3) "age"
4) "29"
5) "height"
6) "179"
7) "weight"
8) "85"
3:hget 获取hash值
127.0.0.1:6379> hset hash1 name camellia age 29 height 179 weight 85
(integ
127.0.0.1:6379> hget hash1 name
"camellia"
4:hmget批量获取hash值
127.0.0.1:6379> hmget hash1 name age height
1) "camellia"
2) "29"
3) "179"
5:hgetall批量获取某个hash的所有值
127.0.0.1:6379> hset hash1 name camellia age 29 height 179 weight 85
(integer) 4
127.0.0.1:6379> hget hash1 name
"camellia"
127.0.0.1:6379> hgetall hash1
1) "name"
2) "camellia"
3) "age"
4) "29"
5) "height"
6) "179"
7) "weight"
8) "85"
6:hel删除hash指定的key字段(不是删除hash,是删除hash存储的map中的key)
127.0.0.1:6379> hgetall hash1 # 获取所有值
1) "name"
2) "camellia"
3) "age"
4) "29"
5) "height"
6) "179"
7) "weight"
8) "85"
127.0.0.1:6379> hdel hash1 weight # 删除weight键
(integer) 1
127.0.0.1:6379> hgetall hash1 # 获取所有值
1) "name"
2) "camellia"
3) "age"
4) "29"
5) "height"
6) "179"
7:hlen获取hash中有几个键值对(字段数量)
127.0.0.1:6379> hgetall hash1
1) "name"
2) "camellia"
3) "age"
4) "29"
5) "height"
6) "179"
127.0.0.1:6379> hlen hash1
(integer) 3
8:HEXISTS判断hash中的指定的key是否存在
127.0.0.1:6379> hexists hash1 name
(integer) 1
9:hkeys只获取hash中的所有key
127.0.0.1:6379> hkeys hash1
1) "name"
2) "age"
3) "height"
10:hvals只获取hash中的value
127.0.0.1:6379> hvals hash1
1) "camellia"
2) "29"
3) "179"
11:HINCRBY 在hash中得某个key对应的值增加指定数值
127.0.0.1:6379> hset hash1 num 0 # 设置num值为0
(integer) 1
127.0.0.1:6379> hincrby hash1 num 10 # +10
(integer) 10
127.0.0.1:6379> hget hash1 num
"10"
127.0.0.1:6379> hincrby hash1 num -5 # -5
(integer) 5
127.0.0.1:6379> hget hash1 num
"5"
我记得之前是有Hdecrby这个命令的。但是今天测试的时候发现这个命令没了,那就使用hincrby加负数来实现减操作好了。
12:hsetnx 如果不存在则设置,如果存在则不设置
127.0.0.1:6379> hsetnx hash1 name gc
(integer) 0
127.0.0.1:6379> hget hash1 name
"camellia"
127.0.0.1:6379> hsetnx hash1 weight 85
(integer) 1
127.0.0.1:6379> hget hash1 weight
"85"
13:删除指定name的hash集合
127.0.0.1:6379> keys *
1) "name"
2) "dalian"
3) "list2"
4) "set2"
5) "hash1"
6) "webscoket-1"
7) "interset"
8) "list1"
9) "unionset"
127.0.0.1:6379> del hash1
(integer) 1
127.0.0.1:6379> keys *
1) "name"
2) "dalian"
3) "list2"
4) "set2"
5) "webscoket-1"
6) "interset"
7) "list1"
8) "unionset"
Hash本质上和string类型没有太大区别,还是一个简单的key-value
以上大概就是hash的基本使用。
有好的建议,请在下方输入你的评论。