实验环境
操作系统: ubuntu-16.04-x64
redis版本: 4.0.9
概述
Hash类型的键值是一种字典结构,其存储了字段和字段值的映射,但字段只能是字符串,不能支持其他数据类型,也就是说Hash类型不能嵌套其他的数据类型。一个Hash类型键值可以包含至多2^32 - 1个字段。
提示
除了Hash类型,redis其他数据类型同样不支持数据类型嵌套,比如集合类型的元素只能是字符串,不能是另外一个集合或者散列表。
常见命令
1.赋值与取值
HSET key field value #设置键值中的一个key的值
HGET key field #获取键值中的一个key的值
HMSET key field value [field value ...] #设置键值中的多个key
HMGET key field [field ...] #获取键值中的多个key
HGETALL key #获取所有的键值
例:
127.0.0.1:6379> HSET person name name1
(integer) 1
127.0.0.1:6379> HGET person name
"name1"
127.0.0.1:6379> HMSET person id 20 gender male age 30
OK
127.0.0.1:6379> HMGET person id gender
1) "20"
2) "male"
127.0.0.1:6379> HGETALL person
1) "name"
2) "name1"
3) "age"
4) "30"
5) "id"
6) "20"
7) "gender"
8) "male"
2.删除Hash中指定域
HDEL key field [field ...]
例:
127.0.0.1:6379> HSET person name "lisi"
(integer) 0
127.0.0.1:6379> HDEL person name
(integer) 1
127.0.0.1:6379> HSET person name "lisi"
(integer) 1
127.0.0.1:6379> HSET person age 30
(integer) 1
127.0.0.1:6379> HSET person gender male
(integer) 1
127.0.0.1:6379> HDEL person name age gender
(integer) 3
3.判断字段是否存在
HEXISTS key field
例:
127.0.0.1:6379> HSET person name "lisi"
(integer) 1
127.0.0.1:6379> HEXISTS person name
(integer) 1
127.0.0.1:6379> HEXISTS person age
(integer) 0
4.当字段不能存在时赋值
HSETNX key field value
HSETNX命令与HSET类似,区别是如果字段存在,HSETNX将不做任何操作,HSET会覆写原来的值。
5.字段增加整数
HINCRBY key field increment
例:
127.0.0.1:6379> HSET student score 60
(integer) 1
127.0.0.1:6379> HINCRBY student score 10
(integer) 70
127.0.0.1:6379> HGET student score
"70"
6.字段增加浮点数
HINCRBYFLOAT key field increment
例:
127.0.0.1:6379> HSET student score 56.4
(integer) 0
127.0.0.1:6379> HINCRBYFLOAT student score 20.3
"76.7"
127.0.0.1:6379> HGET student score
"76.7"
7.只获取字段名或字段值
HKEYS key
HVALS key
例:
127.0.0.1:6379> HSET student name "lisi"
(integer) 1
127.0.0.1:6379> HSET student age 40
(integer) 1
127.0.0.1:6379> HSET student gender male
(integer) 1
127.0.0.1:6379> HKEYS student
1) "name"
2) "age"
3) "gender"
127.0.0.1:6379> HVALS student
1) "lisi"
2) "40"
3) "male"
8.获取字段数量
HLEN key
例:
127.0.0.1:6379> HSET student name "lisi"
(integer) 1
127.0.0.1:6379> HSET student age 20
(integer) 1
127.0.0.1:6379> HSET student gender male
(integer) 1
127.0.0.1:6379> HLEN student
(integer) 3